杭电 2092 【思路错误】【推理公式大法好】【如果两者都为0,则输入结束——理解错误】整数解

来源:互联网 发布:hlsl知乎 编辑:程序博客网 时间:2024/05/08 10:23
#include <stdio.h>#include <math.h>int main(){    int n,m;    while(scanf("%d%d",&n,&m),(n!=0)||(m!=0))//注意这里的逻辑或符号!如果n为0,m为3这种情况也可以,如果按都不能为0的写法就会直接结束了   {        double x=(n+sqrt(n*n-4*m))/2;        printf(((int) x==x)?"Yes\n":"No\n");    }    return 0;}
#include<stdio.h>//思路错误版#include<math.h>int main(){int n,m,i,flag;while(EOF!=scanf("%d%d",&n,&m)&&(m!=0&&n!=0)){flag=0;if(n<0||m<0){for(i=-1;i>n;i--)//没有考虑到和为正,单独的数比和大的情况if((m/i)+i==n)flag=1;}else{for(i=1;i<n;i++)if((m/i)+i==n)flag=1;}if(flag==1)printf("Yes\n");elseprintf("No\n");}    return 0;}


0 0
原创粉丝点击