2017青岛网络赛1011 A Cubic number and A Cubic Number
A Cubic number and A Cubic Number
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 4947 Accepted Submission(s): 1346
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).
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
Source
输入输出测试
#include <math.h>
#include<iostream>
#include<vector>
#define ll long long int
using namespace std;
vector<ll> t_vec;
bool fun(ll a) {
a = (a - 1);
if (a % 3 != 0) {
return false;
}
a = a / 3;
ll tem = sqrt(a);
if (tem*(tem + 1) == a)
return true;
else
return false;
}
int main() {
int t;
ll n;
cin >> t;
while (t--) {
cin >> n;
if (fun(n))
cout << "YES\n";
else
cout << "NO\n";
}
return 0;
}