题目链接:​​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;
}