Bob's Problem | ||
Accepted : 114 | Submit : 589 | |
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 SourceXTU OnlineJudge |
分析:暴力+二分。
#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
int ans[1000010];
int main()
{
int len=0;
int n,m,l,r;
bool flag;
memset(ans,false ,sizeof(ans));
for(int i=1;i<=1000;i++)
{
for(int j=i;j*j*j+i*i*i<=1000000000;j++)
{
ans[len++]=j*j*j+i*i*i;
}
}
sort(ans,ans+len);
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
l=0,r=len-1;
flag=false ;
while(l<=r)
{
int mid=(l+r)/2;
if(ans[mid]==m)
{
flag=true ;
break;
}
if(ans[mid]<m)
l=mid+1;
else r=mid-1;
}
if(flag) printf("Yes\n");
else printf("No\n");
}
}