銀行貸款的等額本息還款方法是:
每月還固定的金額,在約定的期數內正好還完(最後乙個月可能會有微小的零頭出入)。
比如說小明在銀行貸款1萬元。貸款年化利率為5%,貸款期限為24個月。
則銀行會在每個月進行結算:
結算方法是:計算本金在本月產生的利息: 本金 x (年利率/12)
則本月本金結餘為:本金 + 利息 - 每月固定還款額
計算結果會四捨五入到「分」。
經計算,此種情況下,固定還款額應為:438.71
這樣,第一月結算時的本金餘額是:
9602.96
第二個月結算:
9204.26
第三個月結算:
8803.9
…. 最後乙個月如果仍按固定額還款,則最後仍有0.11元的本金餘額,
但如果調整固定還款額為438.72, 則最後乙個月會多還了銀行0.14元。
銀行會選擇最後本金結算絕對值最小的情況來設定 每月的固定還款額度。
如果有兩種情況最後本金絕對值相同,則選擇還款較少的那個方案。
本題的任務是已知年化利率,還款期數,求每月的固定還款額度。
假設小明貸款為1萬元,即:初始本金=1萬元。
年化利率的單位是百分之多少。
期數的單位為多少個月。
輸入為2行,
第一行為乙個小數r,表示年率是百分之幾.r<30
第二行為乙個整數n,表示還款期限。 (6<=n<=120)
要求輸出為乙個整數,表示每月還款額(單位是:分)
例如:
輸入:
4.01
24程式應該輸出:
43429
再比如:
輸入:
6.85
36程式應該輸出:
30809
利用二分搜尋的思想,先計算出每月還款的上下限,無利息時最少,最後一次還最多,即:
**int left = 1000000 / n;
int right = 1000000 * pow((100 + r)/ 100,n/12) / n;**
其中精確到分,我給雖有數字均擴大100,把問題轉換成為整數的二分。
其中關鍵要對sum取double型因為分之後的小數字四捨五入時會對分位產生影響,
因此: sum = (double)(int)(sum + 0.5);手動四捨五入很關鍵。
#include
#include
#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f
using
namespace
std;
double r, n;
double ans[100];
double temp[100];
int cnt = 0;
int search(int x)
ans[cnt] = x;
if (x == 30809) cout
<< sum << endl;
if (x == 30808) cout
<< sum << endl;
temp[cnt] = sum;
cnt++;
return sum;
}int main()
if (left == right) break;
}if (flag) cout
<< mid;
else
else
if (abs(a) == abs(temp[i]))}}
printf("%.0f\n", ans[b]);
}return
0;}
也可以不記錄所有的結餘sum值,只需要比較,mid,mid-1,mid+1三個數的結果即可。如下所示:
#include
#include
#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f
using
namespace
std;
/*有資料不對。。。。。
*/double r, n;
int search(int x)
return (int)sum;
}struct node
;node ans[5];
bool cmp(node s1, node s2)
int main()
if (left == right) break;
}ans[0].x = search(mid);ans[0].mid = mid;
ans[1].x = search(mid+1);ans[1].mid = mid+1;
ans[2].x = search(mid-1);ans[2].mid = mid-1;
sort(ans, ans + 3, cmp);
cout
<< ans[0].mid << endl;
return
0;}
藍橋 還款計算(暴力,浮點數二分)
銀行貸款的等額本息還款方法是 每月還固定的金額,在約定的期數內正好還完 最後乙個月可能會有微小的零頭出入 比如說小明在銀行貸款1萬元。貸款年化利率為5 貸款期限為24個月。則銀行會在每個月進行結算 結算方法是 計算本金在本月產生的利息 本金 x 年利率 12 則本月本金結餘為 本金 利息 每月固定還...
藍橋杯 分巧克力(二分搜尋)
歷屆試題 分巧克力 時間限制 1.0s 記憶體限制 256.0mb 問題描述 兒童節那天有k位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友們。小明一共有n塊巧克力,其中第i塊是hi x wi的方格組成的長方形。為了公平起見,小明需要從這 n 塊巧克力中切出k塊巧克力分給小朋友們。切出的巧克力...
刷題 二分搜尋 (1)
模板 找出最左邊的乙個,最右邊的乙個,和長度 注意找左位置時要判斷 1 不可以是字串結尾,不然為0或為空 2 不可以不等於key include include include using namespace std intn,m const int n 100003 int d n intmain...