为什么把r=mid和l=mid;改为r=mid-0.0001;和l=mid+0.0001;后依然可以AC,这样程序运行过程有什么区别呢???
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n,w,m;
double ans;
void out(double x){
printf("%.1f",x*100);
exit(0);
}
double check(double mid){
double tot=n;
for(int i=1;i<=m;i++){
tot=tot*(1+mid)-w;
}
return tot;
}
int main()
{
cin>>n>>w>>m;
double l=0,r=5,mid;
while(r-l>=0.0001){
mid=(l+r)/2.0;
ans=mid;
double temp=check(mid);
if(temp==0){
out(ans);
}else if(temp>0){
r=mid;
}else if(temp<0){
l=mid;
}
}
out(ans);
return 0;
}