复习二分法。
银行贷款
- 此题要注意输出一位小数,可以采用 setprecision(1)的方法也可以printf(“%.1f”,r*100)。
- 注意x与sum的单调性,决定二分更新右边界还是左边界,这里x越大,sum越大,因此当check()为真时,更新右边界,$r=mid$
#include<iostream>
#include<algorithm>
#include<iomanip>
using namespace std;
int w0,w,m;
bool check(double x){
double s=w0;
for(int i=0;i<m;i++){
s=s*(1+x)-w;
}
return s>=0;
}
int main(){
cin>>w0>>w>>m;
double l=0,r=4;
while(r-l>1e-5){
double mid=(l+r)/2;
if(check(mid))r=mid;
else l=mid;
}
printf("%.1f",r*100);
}