[GESP2406二级] 平方之和

从题目可知,因为x和y的平方和等于a,所以x和y的值一定不超过sqrt(a)

方案1:对于每一个a,利用双层循环遍历所有的x和y的可能性,确定是否存在满足条件

方案2:对于每一个a,利用单层循环遍历所有可能的x,根据公式计算出y,如果y是正整数,说明存在满足条件的情况

#include <iostream>
#include <cmath>
using namespace std;
int main(){
    int n,a;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a;
        bool f=false;
        for(int x=1;x*x<=a;x++){
            int y=sqrt(a-x*x);
            if(y*y+x*x==a){
                f=true;
                break;
            }
        }
        cout<<(f?"Yes\n":"No\n");
    }
    return 0;
}