XTU-1185 Bob's Problem

来源:互联网 发布:php与python交互 编辑:程序博客网 时间:2024/05/16 14:20

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;}


 

0 0
原创粉丝点击