Bob's Problem |
||
Accepted : 114 | Submit : 589 | |
Time Limit : 1000 MS | Memory Limit : 65536 KB |
題目描寫敘述Bob今天碰到一個問題。他想知道x3+y3 = c 是否存在正整數解?ios 輸入第一行是一個整數K(K≤20000),表示例子的個數。 之後每行一個整數c(2≤c≤109)post 輸出每行輸出一個例子的結果。假設存在。輸出「Yes」,不然輸出「No」。(引號不用輸出)spa 例子輸入2 28 27 例子輸出Yes No SourceXTU OnlineJudge |
分析:暴力+二分。code
#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"); } }