3#错了,玄学问题
查看原帖
3#错了,玄学问题
890321
mooktian楼主2023/3/23 16:44

三号点三个数据是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;
}
2023/3/23 16:44
加载中...