首页 > ACM题库 > HDU-杭电 > hdu 2092 整数解-数学[解题报告]C++
2013
12-29

hdu 2092 整数解-数学[解题报告]C++

整数解

问题描述 :

有二个整数,它们加起来等于某个整数,乘起来又等于另一个整数,它们到底是真还是假,也就是这种整数到底存不存在,实在有点吃不准,你能快速回答吗?看来只能通过编程。
例如:
x + y = 9,x * y = 15 ? 找不到这样的整数x和y
1+4=5,1*4=4,所以,加起来等于5,乘起来等于4的二个整数为1和4
7+(-8)=-1,7*(-8)=-56,所以,加起来等于-1,乘起来等于-56的二个整数为7和-8

输入:

输入数据为成对出现的整数n,m(-10000<n,m<10000),它们分别表示整数的和与积,如果两者都为0,则输入结束。

输出:

输入数据为成对出现的整数n,m(-10000<n,m<10000),它们分别表示整数的和与积,如果两者都为0,则输入结束。

样例输入:

9 15
5 4
1 -56
0 0

样例输出:

No
Yes
Yes

#include<stdio.h>
#include<math.h>
#define eps 1e-8
int main()
{
    int n,m;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        if(n==0&&m==0)break;
        int tmp=n*n-4*m;
        if(tmp>=0)
        {
            double x=sqrt((double)tmp);
            int y=x+eps;
            if(fabs(y-x)<=eps)
            {
                if((n&1 && y&1 )|| (!(n&1)&&!(y&1)))printf("Yes\n");
                else printf("No\n");
            }
            else printf("No\n");
        }
        else printf("No\n");
    }
    return 0;
}

 

解题转自:http://www.cnblogs.com/XDJjy/p/3250502.html


  1. Good task for the group. Hold it up for every yeara??s winner. This is a excellent oppotunity for a lot more enhancement. Indeed, obtaining far better and much better is constantly the crucial. Just like my pal suggests on the truth about ab muscles, he just keeps obtaining much better.