HDU 2092

来源:互联网 发布:智能遥控器软件 编辑:程序博客网 时间:2024/05/18 18:21


有二个整数,它们加起来等于某个整数,乘起来又等于另一个整数,这种整数到底存不存在?

输入数据为成对出现的整数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;      }  


 


0 0
原创粉丝点击