題目鏈結
當乙個人從銀行貸款後,在一段時間內他(她)將不得不每月償還固定的分期付款。這個問題要求計算出貸款者向銀行支付的利率。假設利率按月累計。
輸入格式
三個用空格隔開的正整數。
第乙個整數表示貸款的原值,第二個整數表示每月支付的分期付款金額,第三個整數表示分期付款還清貸款所需的總月數。
輸出格式
乙個實數,表示該貸款的月利率(用百分數表示),四捨五入精確到0.1%。
輸入輸出樣例
輸入1000 100 12
輸出2.9
計算公式
月還款額=本金 * 月利率 * (1+月利率)n/[(1+月利率)n-1]
坑:測試資料會月利率大於1
解法一:銀行貸款(暴力列舉)
#include
using
namespace std;
intmain()
} ans *
=100
;printf
("%.1lf"
, ans)
;return0;
}
因為答案取值範圍較小,可以直接利用暴力列舉的方式列舉出答案,注意要取到小數點後4位,方便四捨五入。
解法二:二分查詢
如果將 i 看作自變數,n看作因變數時
容易證明,此函式具有單調性。
所以二分列舉 i 的值,再進行判斷即可
化簡得後,用等比數列的求和公式得
[1/(1+i)]i=1 - n/m * i 化簡
#include
using
namespace std;
double r, l, total, y_money, y_time;
intmain()
l*=100;
printf
("%.1lf"
, l)
;return0;
}
題目簡單,但是對於不會計算月利率的同學來說,還是挺麻煩的… 洛谷P1163銀行貸款(經典二分答案入門題)
跟最大值最小化 最小值最大化 略有不同,列舉利率滿足 0剛好還完即可 坑點,浮點數有精度誤差,控制好 但大致上一樣。其實我是先寫暴力列舉再改為二分列舉的。注意幾點 1.經濟學常識,利率累加每月的額外支付不一樣 明白那個計算公式相當於judge函式 2.找到乙個滿足的就可以退出,不用再像最小值最大化再...
洛谷P1661擴散 二分 並查集
首先我們先二分答案,然後用並查集記錄有多少個聯通塊。如果兩個聯通塊成為乙個聯通塊,則他們的哈密頓距離小於擴散時間的一半。因此可以二分答案,檢查是否等於乙個聯通塊就行了。include include include include using namespace std typedef long l...
洛谷 基礎 遞推與二分筆記
p1025 數的劃分 p1057 傳球遊戲 p1216 數字三角形 p1182 數列分段 section ii p1316 丟瓶蓋 有n級的台階,你一開始在底部,每次可以向上邁最多k級台階 最少11級 問到達第n級台階有多少種不同方式。兩個正整數n,k。乙個正整數,為不同方式數,由於答案可能很大,你...