HDU 6216 A Cubic number and A Cubic Number

来源:互联网 发布:淘宝网店押金怎么退 编辑:程序博客网 时间:2024/05/29 06:41

A Cubic number and A Cubic Number

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


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
2017 ACM/ICPC Asia Regional Qingdao Online
 

Recommend
liuyiding   |   We have carefully selected several similar problems for you:  6216 6215 6214 6213 6212 



让求x^3-y^3=p是否成立,水了一下,ac

用一个数学公式水的

x^3-y^3
=(x^3-x^2*y)+x^2*y-(y^3-x*y^2)-x*y^2
=x^2(x-y)-y^2(y-x)+xy(x-y)

=(x-y)(x^2+xy+y^2)


ac代码:

#include <cstdio>#include <cmath>#include <cstring>#include <algorithm>#define ll long longusing namespace std;const int maxn=1e6+10;ll t,n;int main(){scanf("%lld",&t);while(t--){scanf("%lld",&n);ll i=1;int flag=0;ll aaaa;while(i <= maxn){aaaa=3*i*i+3*i+1;if(aaaa == n){flag=1;break ;}i++;if(aaaa > n)break ;}if(flag)printf("YES\n");elseprintf("NO\n");}return 0;}


原创粉丝点击