P1163 银行贷款
当一个人从银行贷款后,在一段时间内他(她)将不得不每月偿还固定的分期付款。这个问题要求计算出贷款者向银行支付的利率。假设利率按月累计。
#include <bits/stdc++.h>
using namespace std;
int w0;
int w;
int m;
bool check(double h);
int main()
{
double l, r, mid, ans;
scanf("%d%d%d", &w0, &w, &m);
l = 0.00000001, r = 3.0;
while (r - l > 0.0000001)
{
mid = (l + r) / 2;
if (check(mid))
{
//利息够低,能还完,看还能不能继续提高利率
ans = mid, l = mid;
}
else
{
//利息太高还不完,所以降低利息
r = mid;
}
}
printf("%.1lf\n", ans * 100);
return 0;
}
bool check(double h)
{
//判断以利率h,m个月,每月还款w元。是否能还完计划
double zdk = w0; //总的贷款额度
for (int i = 0; i < m; i++)
{
//第一个月还的时候的本金加利息
zdk = zdk * (1 + h);
zdk -= w;
if (zdk <= 0)
return true;
}
return false;
}
