题目名字 银行利率
题意
算出在贷款n元还款m元还x月的利率是多少
思路
- 先算每个月要还的钱和剩下需要还的钱
- 用二分来算利率
- 判断经过x月以后,剩余要还的钱是否等于0(或者是l和r相差小于0.0001),来找最合适的mid也就是利率;
坑点
- 钱还多了,说明利率比较小,要让mid增大
代码
#include<iostream>
#include<cstdio>
using namespace std;
double n,m,x;
double find(double l,double r)
{ //自定义一个函数来写判断利率,括号里面是这个函数里面要用的两个函数
double mid=(l+r)/2;
double ans=n;//先把总金额赋值给一个数来计算剩余要还的钱
for(int i=1;i<=x;i++)
{
ans=(1+mid)*ans-m;
}//算还完十二个月后剩余的钱
if(ans==0||r-l<0.0001){//或精确度已经到了,任意返回
return mid;
}
if(ans<0){
return find(mid,r);
}
else
{
return find(l,mid);
}
}
int main(){
cin>>n>>m>>x;
double h=find(0,4);//给定l和r的初值就不用while
printf("%.1lf",h*100);
}