捞
查看原帖
捞
768416
Ac_forever楼主2023/10/28 16:42

RE on #5

#include<cstdio>
#include<cmath>
#define int long long
using namespace std;
int n,m,mm,zz,ans;
long double p,minn=10000001;
int gcd(int a,int b){
	if(b==0)return a;
	return gcd(b,a%b);
}
signed main(){
	scanf("%lld%lld",&n,&m);
	scanf("%Lf",&p);
	for(int i=1;i<=m;i++){
		int o=(int)(ceil(i*1.0*p));
		if(o>n)break;
		for(int j=o-1;j<=o+1;j++){
			if(abs((long double)(j*1.0/i)-p)<=minn){
				if(abs((long double)(j*1.0/i)-p)==minn)ans++;
				else ans=0;
				minn=abs((long double)(j*1.0/i)-p);
				mm=i,zz=j;
			}
		}
	}
	int r=gcd(mm,zz);
	// if(zz==0&&n%10==1&&ans)printf("TOO MANY");
	// else{
		if(mm==1)printf("%lld",zz);
		else printf("%lld/%lld",zz/r,mm/r);
	// }
}

还没加判TOO MANY

2023/10/28 16:42
加载中...