A Cubic number and A Cubic Number

来源:互联网 发布:长沙网络推广公司 编辑:程序博客网 时间:2024/05/14 21:16

A Cubic number and A Cubic Number

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 0    Accepted Submission(s): 0


Problem Description
A cubic number is the result of using a whole number in a multiplication three times. For example,3×3×3=27 so 27 is a cubic number. The first few cubic numbers are 1,8,27,64 and 125. Given an prime number p. Check that if p is a difference of two cubic numbers.
 

Input
The first of input contains an integer T (1T100) which is the total number of test cases.
For each test case, a line contains a prime number p (2p1012).
 

Output
For each test case, output 'YES' if given p is a difference of two cubic numbers, or 'NO' if not.
 

Sample Input
102357111317192329
 

Sample Output
NONONOYESNONONOYESNONO
 

Source
输入输出测试
 未AC代码:因为超内存
#include<stdio.h>#include<iostream>using namespace std;long num[10000];long subnum[80000000];int main(){int n,t;int i,j;int x,y;cin>>n;int cnt=1;int flag=0;for(i=1;i<=10000;i++){num[i] = i*i*i;}for(i=1;i<=10000;i++){for(j=1;j<i;j++){subnum[cnt++]=num[i]-num[j];}}for(x=1;x<=n;x++){cin>>t;for(y=1;y<=cnt;y++){if(t==subnum[y]){flag=1;break;}else{flag=0;}}if(flag==1)printf("YES\n");elseprintf("NO\n");}}
AC代码:
#include<stdio.h>#include<iostream>using namespace std;long long subnum[1000000];int main(){long long n,t;long long i,j;int x,y;cin>>n;long cnt=1;int flag=0;for(i=1;i<=1000000;i++){subnum[cnt++]=i*i*i-(i-1)*(i-1)*(i-1);}for(x=1;x<=n;x++){cin>>t;long long pos;pos = lower_bound(subnum,subnum+cnt,t)-subnum;if(subnum[pos]==t)printf("YES\n");elseprintf("NO\n");}return 0;}
如果两个数的立方差是素数,那么这两个数必定相邻。

原创粉丝点击