三号点三个数据是1 1 1,结果是0.0 我在本地运行也是这个结果,提交就挂了,不知道为啥。 贴上代码,求大神帮忙看看。
#include <bits/stdc++.h>
#define f(i,a,b) for(int i=a;i<=b;i++)
#define g(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
long long loan,pay,month;//本金,月还款,月份
double rate;
double money(double loan,int pay,int month,double rate) {
int num=loan;
f(i,1,month) {
loan=loan*(1+rate)-pay;
if(loan>num) break;
}
return loan;
}
double fun(int loan,int pay,int month,double l,double r) {
double mid=(l+r)/2.0;
if(r-l<=0.001) return mid;
if(money(loan*1.0,pay,month,l)<0&&money(loan*1.0,pay,month,mid)>0) fun(loan,pay,month,l,mid);
else {
if(money(loan*1.0,pay,month,mid)<0&&money(loan*1.0,pay,month,r)>0) fun(loan,pay,month,mid,r);
}
}
int main(){
cin>>loan>>pay>>month;
rate=fun(loan,pay,month,0.0,100.0);
printf("%.1lf",rate*100);
return 0;
}