关于pj T2瞎搞做法
查看原帖
关于pj T2瞎搞做法
308384
Morpheuse楼主2022/3/26 19:23

大样例过了 和暴力拍了两个小时没问题

但是有个大佬说我做法假了

到底假在哪了

#include<bits/stdc++.h>
using namespace std;
#define int long long
int T;
int gcd(int x , int y)
{
	return y == 0 ? x : gcd(y , x % y);
}
signed main()
{
	freopen("math.in" , "r" , stdin);
	freopen("math.out" , "w" , stdout);
	scanf("%lld", &T);
	while(T --)
	{
		int x,z;
		scanf("%lld%lld", &x,&z);
		int t = z / x;	
		int k = gcd(x , t);
		if(z % x || (k == t && k != 1))
		{
			printf("-1\n"); 
			continue;
		} 
		int y = t / k , xy = gcd(x , y);
		if(xy != k)
		{
			y = y * sqrt(k / xy);
		}
		if(y * x * gcd(x , y) != z)
		{
			printf("-1\n");
			continue;
		}
		printf("%lld\n", y);
	}
}
/*
2
50972 81243539861520
214191 661251318389730

796942830
343022670

1
4 32
*/
2022/3/26 19:23
加载中...