湘潭大学第八届程序设计竞赛B题

来源:互联网 发布:首席数据家 编辑:程序博客网 时间:2024/06/10 09:25
本题要注意测试数据相当的多啊,所以要先构造出所有解并排序,然后用二分查找即可

Bob's Problem

Accepted : 29 Submit : 193Time Limit : 1000 MS Memory Limit : 65536 KB 

题目描述

Bob今天碰到一个问题,他想知道x3+y3 = c 是否存在正整数解?

输入

第一行是一个整数K(K≤20000),表示样例的个数。 以后每行一个整数c(2≤c≤109)

输出

每行输出一个样例的结果,如果存在,输出“Yes”,否则输出“No”。(引号不用输出)

样例输入

22827

样例输出

YesNo
[ Submit Solution ]
#include <cstdio>#include<cmath>#include<string.h>#include<algorithm>int s[900000];int main(){    int a=1,b=1,c,k,t=0;    for(a=1;a<=999;a++)        for(b=1;b<=999;b++)    {        if(a*a*a+b*b*b<=1000000000)        s[t++]=a*a*a+b*b*b;        else            break;    }     std::sort(s,s+t);     scanf("%d",&k);    while(k--)    {       scanf("%d",&c);       int low=0,high=t,mid;       int ok=0;       while(low<high)       {           mid=low+(high-low)/2;           if(s[mid]>c)high=mid;           if(s[mid]==c){ok=1;break;}           if(s[mid]<c)low=mid+1;       }       if(ok)printf("Yes\n");       else printf("No\n");    }    return 0;}

0 0