HDU 2092


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

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

 

 
 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值