题目描述
Bob今天碰到一个问题,他想知道x3+y3 = c 是否存在正整数解?
输入
第一行是一个整数K(K≤20000),表示样例的个数。 以后每行一个整数c(2≤c≤109)
输出
每行输出一个样例的结果,如果存在,输出“Yes”,否则输出“No”。(引号不用输出)
样例输入
2 28 27
样例输出
Yes No
题解:这个数学题目,只能通过枚举。STL set中可以保存数字出现没有。
#include <cstdio>
#include <iostream>
#include <set>
using namespace std;
int f[3010],t=0,i,j,n,T;
int main()
{
set<int> st;
for (i=1;i<1010;i++)
f[t++]=i*i*i;
for (i=0;i<t;i++)
for (j=1;j<t;j++)
st.insert(f[i]+f[j]);
scanf("%d",&T);
while (T--)
{
scanf("%d",&n);
int k=st.count(n);
if (k) printf("Yes\n");
else printf("No\n");
}
return 0;
}