杭电ACM2092–整数解    分析

http://acm.hdu.edu.cn/showproblem.php?pid=2092

 

一个YES,一个Yes。试了10几次、、我也是无语了。。哪里都不错的。。。。

很简单,用2次求根公式求出其中一个的值,然后判断是否为整数    if (x == int(x) )。

或者  用最直接的方法,从-m到m挨个算。有意结果时停止。

 

源码:

 
#include <stdio.h>
#include <math.h>
int main()
{
    int m,n;
    double x,y;
    while (scanf("%d%d",&n,&m)!=EOF&&(m!=0||n!=0))
    {
        x = ((double)n+(double)sqrt((double)(n*n-4*m)))/2;
        //y = ((double)n-(double)sqrt((double)(n*n-4*m)))/2;
        if (x == int(x) )//|| y == int(y))
            printf("Yes\n");
        else
            printf("No\n");
    }
    return 0;
}
/*
#include<stdio.h>
#include<math.h>
void main()
{
    int n,m,i;
    while(scanf("%d%d",&n,&m)==2&&(n!=0||m!=0))
    {
        for(i=-abs(m);i<=abs(m);i++)
        {
            if(i*(n-i)==m)
                break;
        }
        if(i==(abs(m)+1))
            printf("No\n");
        else
            printf("Yes\n");
    }
}*/

 

 

 

版权声明:本文为acmwangpeng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/acmwangpeng/p/5524881.html