题意:给出质数p问p是不是两个数的立方差
思路:a^3-b^3=(a-b)(a^2+ab+b^2)=p p只能分解成1*p
所以:a-b=1, (a^2+ab+b^2)=p
联立消去a,二次函数求delta可得b= (-3+ sqrt(3*(4p-1)) ) /6 b必须是整数
因此只要4p-1是3的倍数&&4p-1开方是整数
迎刃而解
int main()
{
//ll r=1ll*123456*123456;
//cout<<r<<endl;
//ll f=sqrt(15241383935);
//cout<<f*f<<endl;
int T;
scann(T);
while(T--)
{
ll p;
scanl(p);
ll dd=4*p-1;
if(dd%3==0)
{
dd=dd/3;
ll t=sqrt(dd);
if(t*t==dd)
printf("YES\n");
else
printf("NO\n");
}
else
printf("NO\n");
}
return 0;
}