本文主要是介绍湘潭大学第八届程序设计竞赛B题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本题要注意测试数据相当的多啊,所以要先构造出所有解并排序,然后用二分查找即可
Bob's Problem | ||
Accepted : 29 | Submit : 193 | |
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 |
[ 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;elsebreak;}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;
}
这篇关于湘潭大学第八届程序设计竞赛B题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!