先转换为一元二次方程
有解,Δ大于等于零
解为整数,Δ可以开平方且-b±Δ%2==0
#include <bits/stdc++.h>
using namespace std;
int is_square(int n){
for(int i=1;i*i<=n;i++)
if(i==n/i&&n%i==0)
return i;
return 0; //d<0会跳过循环也返回0
}
int main(){
int a,b;
while(cin>>a>>b&&(a||b)){
int d=a*a-4*b; //计算Δ
if((d==0&&a%2==0)||(is_square(d)&&(a+d)%2==0))
cout<<"Yes\n";
else
cout<<"No\n";
}
return 0;
} //ps:这题好像没有像2 1这样Δ==0的数据