大样例过了 和暴力拍了两个小时没问题
但是有个大佬说我做法假了
到底假在哪了
#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);
}
}