首页 > 代码库 > XTU-1185 Bob's Problem
XTU-1185 Bob's Problem
http://202.197.224.59/OnlineJudge2/index.php/Problem/read/id/1185
判断 x3+y3 = c 是否存在正整数解,2≤c≤109
首先把给定范围内的所有情况打表用数组保存,然后直接二分查找c即可。
#include<cstdio> #include<algorithm> using namespace std; int cnt,a[1010000]; bool find(int x) { int begin=0,end=cnt-1,mid; while(begin<=end) { mid=(begin+end)/2; if(a[mid]==x) { return 1; } else if(a[mid]>x) end=mid-1; else begin=mid+1; } return 0; } int main() { int i,j,k,c; cnt=0; for(i=1;i<1000;i++) for(j=1;j<1000;j++) if(i*i*i+j*j*j<=1000000000) a[cnt++]=i*i*i+j*j*j; else break; sort(a,a+cnt); scanf("%d",&k); while(k--) { scanf("%d",&c); if(find(c)) printf("Yes\n"); else printf("No\n"); } return 0; }
或者直接借助 set容器。自动完成排序和去重。
#include<cstdio> #include<set> using namespace std; int a[1010]; int main() { int k,c,i,l,j=0; set<int>s; s.clear(); for(i=1;i<=1000;i++) a[j++]=i*i*i; for(i=0;i<j;i++) for(l=i;l<j;l++) s.insert(a[i]+a[l]); scanf("%d",&k); while(k--) { scanf("%d",&c); int flag=s.count(c); if(flag) printf("Yes\n"); else printf("No\n"); } return 0; }
XTU-1185 Bob's Problem
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。