洛谷題集 銀行貸款(暴力列舉與二分查詢)

2021-10-23 17:42:44 字數 1142 閱讀 2510

題目鏈結

當乙個人從銀行貸款後,在一段時間內他(她)將不得不每月償還固定的分期付款。這個問題要求計算出貸款者向銀行支付的利率。假設利率按月累計。

輸入格式

三個用空格隔開的正整數。

第乙個整數表示貸款的原值,第二個整數表示每月支付的分期付款金額,第三個整數表示分期付款還清貸款所需的總月數。

輸出格式

乙個實數,表示該貸款的月利率(用百分數表示),四捨五入精確到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。乙個正整數,為不同方式數,由於答案可能很大,你...