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 "); else printf("No "); } }