题目链接:A Cubic number and A Cubic Number
题目大意:给你一个素数,问能不能由两个立方数相减得到
题目思路:打表可知只有相邻的两个立方数之间才可能产生素数,然后预处理所有的情况就好了
#include <map>
#include <set>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
const ll maxn = 1e6+10;
ll T,n,ans[maxn],sum[maxn];
int main(){
ans[0] = 0;sum[0] = 0;
for(ll i = 1;i < maxn;i++) ans[i] = i*i*i;
for(ll i = 0;i < maxn-1;i++) sum[i] = ans[i+1]-ans[i];
scanf("%lld",&T);
while(T--){
scanf("%lld",&n);
if(n > sum[maxn-2]) puts("NO");
else if(sum[lower_bound(sum,sum+maxn-1,n)-sum] == n) puts("YES");
else puts("NO");
}
return 0;
}