4624: 【GESP2406二级】平方之和

内存限制:64 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:1

题目描述

小杨有  个正整数 ,他想知道对于所有的 ,是否存在两个正整数  和  满足 

输入

第一行包含一个正整数 ,代表正整数数量。 之后  行,每行包含一个正整数,代表 

输出

对于每个正整数 ,如果存在两个正整数  和  满足 ,输出 Yes,否则输出 No

样例输入 复制

2
5
4

样例输出 复制

Yes
No

提示

对于第一个正整数,存在 ,因此答案为 Yes

对于全部数据,保证有 

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