90tps WA on #1
查看原帖
90tps WA on #1
785704
jiawenbo楼主2024/9/7 10:03
#include <iostream>
#include <limits.h>
#include <cmath>
#include <algorithm>
using namespace std;
int bj(int a,int b,int c,int d)
{
	if (a * d <= b * c) return 1;
	return 2;
}
int main()
{
	int m,n;
	double x;
	cin >> m >> n >> x;
	int a,b;
	bool f = false;
	double minn = INT_MAX;
	int fz = 1,fm = 1;
	int i;
	for (i = 1; i <= n; i ++)
	{
		int t1,t2;
		t1 = round(i * x);
		t2 = round(i * x) + 1;
		if (t1 > m) break;
		else if (t2 > m)
		{
			a = t1,b = i;
			if (fabs(a * 1.0 / b - x) < minn) minn = fabs(a * 1.0 / b - x),f = false;
			else if (fabs(a * 1.0 / b - x) == minn) f = true;
		}
		else
		{
			int f = bj(t1,i,t2,i);
			if (f == 1) a = t1,b = i;
			else a = t2,b = i;
			if (fabs(a * 1.0 / b - x) < minn) minn = fabs(a * 1.0 / b - x),fz = a,fm = b,f = false;
			else if (fabs(a * 1.0 / b - x) == minn) f = true;
		}
	}
	if (!f)
	{
		int p = __gcd(fz,fm);
		cout<<fz / p<<'/'<<fm / p;
	}else cout<<"TOO MANY";
	return 0;
}
2024/9/7 10:03
加载中...