题意:问一个素数是不是某两个数的立方差
思路:等于一个素数p,那 a-b = 1,后括号里的数等于p,把b化掉,求这个方程是否有整数解
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<string>
#include<stdlib.h>
#include<math.h>
#include<vector>
#include<list>
#include<map>
#include<set>
#include<stack>
#include<queue>
#include<algorithm>
#include<numeric>
#include<functional>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
int main(void)
{
int T,flag;
ll n;
scanf("%d",&T);
while(T--)
{
scanf("%lld",&n);
flag = 1;
ll in = 3*3-4*3*(1-n);
ll xiao = sqrt(in);
if(xiao *xiao != in)
flag = 0;
ll ans = (-3+xiao) / (2*3);
if(ans * 6 != (-3+xiao))
flag = 0;
if(flag)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}