60分求助
查看原帖
60分求助
195198
E1_de5truct0r楼主2020/12/20 11:21
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
	ios::sync_with_stdio(false);
	int n,m,minx,miny;//minx存分母,miny存分子 
	long double x,minn=1e9;//minn存差值 
	cin>>m>>n>>x;
	
	if(x==0) cout<<"TOO MANY";
	else if(x>m) cout<<m<<'/'<<1;
	else if(x<1.0/double(n)) cout<<1<<'/'<<n;
	//特判 
	else
	{
		int ans=0;
		for(double i=1;i<=n;i++)
		{
			long double y=i*x;
			if(y>m) break;
			if(fabs(y-ceil(y))<minn)//比较分子取整和小数的差与最小的差值 
			{
				minn=fabs(y-ceil(y));
				minx=i;
				miny=ceil(y);
				ans=1;
			}
			else if(fabs(y-ceil(y))==minn)
				ans++;
		}
		//if(ans>1) cout<<"TOO MANY"; 本人发现加上TOO MANY的特判好像不太对,求助...... 
		/*else*/cout<<miny<<'/'<<minx;//输出 
	}
	return 0;
}

求大佬帮忙,谢谢

2020/12/20 11:21
加载中...