zoukankan      html  css  js  c++  java
  • [HDU]2092整数解

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

    x+y=n; x*y=m;  给定n,m,判断是否存在整数解.

    我一开始想到的是韦达定理, 假设x,y是一元二次方程的两解,则x+y=-b/a=n,x*y=c/a;

    而b^2-4ac等价于b^2/a^2-4c/a, 这样就能判断是否有解了, 可这题需要的是整数解.

    所以还需要一些步骤判断是否是整数

    x=-b+sqrt(b^2-4ac)/2a ,  等价于 2x=n+sqrt(b^2-4ac)/a; 

    等价于n+sqrt(b^2-4ac)为偶数,

    #include"stdio.h"
    #include"math.h"
    #include"stdlib.h"
    int main()
    {
         int n,m,t,x,x1,x2;
         while(scanf("%d%d",&n,&m)!=EOF)
         {
             if(n==0&&m==0)
             break;
             t=n*n-4*m;
             if(t<0)
             {
                 printf("No
    ");
                 continue;
             }
             x=(int)sqrt(t);
             if(x*x!=t) 
             {
                 printf("No
    ");
                 continue;
             }
             x1=n+x;
             x2=n-x;
             if(x1%2!=0||x2%2!=0)
             printf("No
    ");
             else
             printf("Yes
    ");
         }
    }    
  • 相关阅读:
    派生选择器
    HTML 标签
    $.get()
    CC150
    CC150
    CC150
    CC150
    HashMap和HashTable的区别
    CC150
    quickSort
  • 原文地址:https://www.cnblogs.com/sjy123/p/3256114.html
Copyright © 2011-2022 走看看