2506: 【普及-】【P1163】银行贷款

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:1

题目描述

当一个人从银行贷款后,在一段时间内他(她)将不得不每月偿还固定的分期付款。这个问题要求计算出贷款者向银行支付的利率。假设利率按月累计。

输入

三个用空格隔开的正整数。

第一个整数表示贷款的原值,第二个整数表示每月支付的分期付款金额,第三个整数表示分期付款还清贷款所需的总月数。

输出

一个实数,表示该贷款的月利率(用百分数表示),四舍五入精确到 lns="http://www.w3.org/1998/Math/MathML">0.1%

样例输入 复制

1000 100 12

样例输出 复制

2.9

提示

数据保证,lns="http://www.w3.org/1998/Math/MathML">1 贷款的原值,分期付款金额 lns="http://www.w3.org/1998/Math/MathML">2311lns="http://www.w3.org/1998/Math/MathML">1 月数 lns="http://www.w3.org/1998/Math/MathML">3000

#include<bits/stdc++.h>
#define eps 1e-4
using namespace std;
int P,A,M;
double ans;
double f(double d) {
	double ret=0;
	for (int i=1;i<=M;i++) {
		ret+=A*pow(1/(1+d),i); 
	}
	return ret;
}
int main(){
	cin>>P>>A>>M;
	double L=0.0,R=5.0;
	while (fabs(f(ans)-P)>eps) {
		ans=(L+R)/2;
		if (f(ans)>P) L=ans;
		else R=ans;
	} 
	printf("%.1f",ans*100);
	return 0;
}