http://acm.hdu.edu.cn/showproblem.php?pid=6216
判断一个数是不是2个立方数的差,由立方差公式可以得到这种数只可能是2个相邻立方数的差
所以先打表再二分找一遍即可
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
long long int dp[611111];
int main()
{
long long int i;
for(i=2;i<=600000;++i)
{
dp[i-1]=i*i*i-(i-1)*(i-1)*(i-1);
}
int T;
cin>>T;
while(T--)
{
long long int n;
cin>>n;
if(binary_search(dp+1,dp+600000,n))
cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}