A32332. 平方之和
填空题
较易
知识点
题目描述
平方之和
题目描述
小杨有 n 个正整数a1,他想知道对于所有的 i ( i<= i <= n),是否存在两个正整数 x 和 y 满 ⾜ x * x + y * y = a i 。
输入格式
第一行包含一个正整数 n,代表正整数数量。
之后 n 行,每行包含一个正整数,代表 a i 。
输出格式
对于每个正整数 ai ,如果存在两个正整数 x 和 y 满⾜,输出Yes,否则输出No。
输入
2
5
4输出
Yes
No样例解释
对于第一个正整数,存在1*1+2*2=5,因此答案为Yes。
数据范围
对于全部数据,保证有 1<= n <= 10, 1<= a i <= 1000000
参考答案
#include<bits/stdc++.h>
using namespace std;
bool check(int x) {
int y = sqrt(x);
return y*y==x;
}
int main() {
int t;
cin>>t;
while(t--) {
int n;
cin>>n;
int fl=0;
for(int i=1; i*i<n; i++) {
int j=n-i*i;
if(check(j))fl=1;
}
if(fl)cout<<"Yes\n";
else cout<<"No\n";
}
}
上一题
下一题