Bob's Problem | ||
Accepted : 53 | Submit : 356 | |
Time Limit : 1000 MS | Memory Limit : 65536 KB |
题目描述Bob今天碰到一个问题,他想知道x3+y3 = c 是否存在正整数解? 输入第一行是一个整数K(K≤20000),表示样例的个数。 以后每行一个整数c(2≤c≤109) 输出每行输出一个样例的结果,如果存在,输出“Yes”,否则输出“No”。(引号不用输出) 样例输入2 28 27 样例输出Yes No |
代码:
#include <stdio.h>
#include <algorithm>
using namespace std;
int ans[900000];
int cnt = 0;
bool find(int x)
{
int end = cnt - 1;
int begin = 0;
while (end >= begin)
{
int mid = (end + begin) / 2;
if (x == ans[mid])
return true;
else if (x < ans[mid])
end = mid - 1;
else
begin = mid + 1;
}
return false;
}
int main()
{
for (int i = 1; i < 1000; i++){
for (int j = 1; j < 1000; j++){
if (i*i*i + j*j*j <= 1000000000)
ans[cnt++] = i*i*i + j*j*j;
else
break;
}
}
sort(ans, ans + cnt);
int k;
scanf("%d", &k);
while (k--)
{
int c;
scanf("%d", &c);
if (find(c))
puts("Yes");
else
puts("No");
}
return 0;
}