有二个整数,它们加起来等于某个整数,乘起来又等于另一个整数,这种整数到底存不存在?
输入数据为成对出现的整数n,m(-10000<n,m<10000),它们分别表示整数的和与积,如果两者都为0,则输入结束。
只需要对于每个n和m,输出“Yes”或者“No”,明确有还是没有这种整数就行了。
#include<stdio.h>
#include<math.h>
int main()
{
int a, b;
while (~scanf("%d%d", &a, &b)) // 写的时候把输入条件的判断写错了。。。
{
if (a == 0 && b == 0)
break;
double j = a*a - 4*b;
if (j < 0)
printf("No\n");
else
{
double q = sqrt(j);
if (q - (int)q == 0.00)
printf("Yes\n");
else
printf("No\n");
}
}
return 0;
}
<pre name="code" class="cpp">#include<stdio.h>
#include<math.h>
void main()
{
double n,m,x1,x2;
while(scanf("%lf %lf",&n,&m)==2)
{
if(n==0&&m==0) break;
x1=(n+sqrt(n*n-4*m))/2;
x2=(n-sqrt(n*n-4*m))/2;
if(x1==(int)(x1)&&x2==(int)(x2))
printf("Yes\n");
else
printf("No\n");
}
}
<pre name="code" class="cpp"> #include<iostream>
using namespace std;
int main(){
long n,m,i;
while(cin>>n>>m&& n&& m ){
bool s=false;
for(i=-10000;i<10001;i++){ //由于数据范围不大,可用循环遍历
long k=n-i;
if(k*i==m){
s=true;
break;
}
}
if(s==true)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}