TLE求调
查看原帖
TLE求调
754584
zhm20120707楼主2024/8/26 09:19

emmm...

之前做的,发现做错了,点进去一看却发现最后一个绑定的特殊样例TLE了...

我试图卡常卡过去

#include <bits/stdc++.h>
#define ll long long
using namespace std;
int a , b;
int sd = 1;

ll sum[105];
ll print[105];

bool temp = 0;
inline void dfs(ll x , ll y , ll s)
{
	if (s == sd)
	{
		register ll gcd = __gcd(x , y);
		x /= gcd;
		y /= gcd;
		
		if (x == 1 and y and y > sum[s - 1])
		{
			if (!temp || y < print[s])
			{
				for (register int i = 1 ; i <= s ; i++)
				{
					print[i] = sum[i];
				}
				print[s] = y;
				temp = 1;
			}
		}
		return ;
	}
	
	register int minn = sum[s - 1] + 1 , maxx = (sd - s + 1) * y / x + 2;
	register ll nx , ny;
	
	for (register int i = minn ; i <= maxx ; i++)
	{
		sum[s] = i;
		nx = x * i - y;
		ny = y * i;
		dfs(nx , ny , s + 1);
	}
}


int main()
{
	scanf("%d%d",&a,&b);
	register int gcd = __gcd(a , b);
	a /= gcd;
	b /= gcd;
	
	
	sd = 2;
	while (1)
	{
		dfs(a , b , 1);
		if (temp)break;
		sd++;
	}
	
//	cout << sd <<'\n';
	for (register int i = 1 ; i <= sd ; i++)
	{
		printf("%d ",print[i]);
	}
	return 0;
}
2024/8/26 09:19
加载中...