rt noio入门t2我写了乱搞做法,因为棺方样例3,4没有-1,所以我忘了特判,再加上参数小了,于是100->0
#include<bits/stdc++.h>
#define F(i,j,k) for (signed i=signed(j);i<=signed(k);i++)
#define endl '\n'
#define int unsigned long long
using namespace std;
int t;
int x,z;
signed main () {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>t;
while(t--){
cin>>x>>z;
if(z%x!=0) {
cout<<-1<<endl;
continue;
}
int k=z/x;
int g=__gcd(k,x);
if(k%g!=0) {
cout<<-1<<endl;
continue;
}
if(x*(z/x/g)*__gcd(x,z/x/g)!=z) for(int i=500;i>=1;i--){
if(g%(i*i)==0) {
g/=i;
if(x*(z/x/g)*__gcd(x,z/x/g)==z) goto end;
else g*=i;
}
}
else goto end;
cout << "-1" << endl;
continue;
end:;
cout<<z/x/g<<endl;
}
return 0;
}