立方差公式不是a3-b3=(a-b)(a2+a*b+b2)吗,为什么在这个程序里面能写成这种形式(题目为判断一个数是不是其他两个整数的立方差)
#include<bits/stdc++.h>
using namespace std;
long long t;
int main()
{
cin>>t;
while(t--)
{
long long p;
cin>>p;
long long i,t=0;
for(i=1;3*i*i+3*i+1<=p;i++)
{
if(3*i*i+3*i+1==p)
{
t=1;
break;
}
}
if(t)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}