请问这个too many的判定到底是什么?
查看原帖
请问这个too many的判定到底是什么?
506475
うっせぇわ楼主2022/8/9 16:30

0.5只要范围够大就应该输出T OO MANY吧?咋这么做还错了呢?

#include <bits/stdc++.h>
using namespace std;
int sborder,mborder;
double minn=397133.3428194;
double mb;
int mem,som;
int main(){
	cin>>sborder>>mborder;
	cin>>mb;
	if(mb-(long long)(mb)==0){
		cout<<mb<<"/1"<<endl;
		return 0;
	}
	for(int i=1;i<=mborder;i++){
		double p=mb*i;
		if(p>sborder)break;
//		if(i==819919)cout<<i<<" "<<p<<" ";
		p-=(long long)(p);
		p=min(p,abs(1-p));
//		if(i==819919)cout<<"误差:"<<p<<endl;
		if(p<minn){
	//		cout<<"GetMin\n";
//			if((long long)(mb*i+0.5)%som==0&&i%mem==0){
//				continue;
//			}
			minn=p;
			mem=i;
			som=(long long)(mb*i+0.5);
		}//else if(p==minn){
//			cout<<"TOO MANY!\n";
//			return 0;
//		}
	}
	long long pj=__gcd(som,mem);
	cout<<som/pj<<"/"<<mem/pj<<endl;
	return 0;
}
/*
1000000 1000000
0.994318485

*/

还有就是这代码,死过不去,我也没检查出什么问题,麻烦大佬看一看谢谢了QwQ\texttt{QwQ}

评测记录

2022/8/9 16:30
加载中...