hdu 6216 立方数相减质数公式

来源:互联网 发布:手机淘宝旧版5.2.2 编辑:程序博客网 时间:2024/06/14 20:44

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 (1≤T≤100) which is the total number of test cases.
For each test case, a line contains a prime number p (2≤p≤1012).

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

Sample Input
10
2
3
5
7
11
13
17
19
23
29

Sample Output
NO
NO
NO
YES
NO
NO
NO
YES
NO
NO

题解:

公式Prime[i]=3*i*i+3*i+1

代码:

#include<iostream>#include<algorithm>using namespace std;#define MAXN 1000007typedef long long Long;Long Prime[MAXN];int main(){    for(Long i=1;i<MAXN;i++)        Prime[i]=3*i*i+3*i+1;    int t;cin>>t;    while(t--){        Long p;cin>>p;        if(binary_search(Prime,Prime+MAXN,p))            cout<<"YES"<<endl;        else cout<<"NO"<<endl;    }}
原创粉丝点击