题解:对于每次操作一个乘k^2,一个乘k;二者合一块就是乘k^3。 所以对于给出的两个数,如果他们的乘积是某个数的三次方,且能整除这两个数,说明这两个数是正确的;
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;
int main()
{
int n;
while(~scanf("%d",&n)){
while(n--){
ll a,b;
scanf("%lld%lld",&a,&b);
ll c=a*b;
ll x=round(pow((double)c,1.0/3));
if((x*x*x==c)&&a%x==0&&b%x==0) printf("Yes\n");
else printf("No\n");
}
}
return 0;
}