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, is
a cubic number. The first few cubic numbers are .
Given an prime number .
Check that if is
a difference of two cubic numbers.
Input
The first of input contains an integer which
is the total number of test cases.
For each test case, a line contains a prime number .
For each test case, a line contains a prime number .
Output
For each test case, output 'YES' if given 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;
}