题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2092
题目描述
思路:
其实题目的意思就是看二元一次方程组是否有整数解的意思,即x+y=d与xy=f;将两个化为x2-dx+f=0,所以这个题目就是得把握二次函数的一些性质就可以了。然后再看这个x2-dx+f=0的式子对应二次函数的参数,a=1,b=-d,c=f;
然后首先是delta=b2-4a*c判断是否小于0,小于0相当于无解,直接输出No。
再是得出x1,x2的解的值,判断x1和x2是否是整数,但凡有一个是整数就可以判断x是存在的,那么y=d-x也同样存在,故就输出Yes。
最后就是小数的情况,直接输出No。
AC代码:
#include<stdio.h>
#include<math.h>
int main(){
int d = 0;
int f = 0;
int delta = 0;//用来判断二次函数是否有解
double x1,x2;
while(scanf("%d%d",&d,&f) != EOF){
if(d == 0&&f == 0) break;
delta = d*d - 4*f;
if(delta < 0){
printf("No\n");
continue;
}
x1 = (d+sqrt(delta))/(2*1.0);
x2 = (d-sqrt(delta))/(2*1.0);
if((x1 - (double)((int)x1)==0) || (x2 - (double)((int)x2) == 0)){
//用来判断x1和x2是否是整数,但凡有一个是整数就可以判断x是存在的,那么y=d-x也同样存在
printf("Yes\n");
}else{
printf("No\n");
}
}
return 0;
}