HDU 5615 Jam's math problem <数学>

来源:互联网 发布:张一山自动画线源码 编辑:程序博客网 时间:2024/06/03 19:10

Jam's math problem
Time Limit: 1000MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I64u

Submit Status

Description

Jam has a math problem. He just learned factorization. 
He is trying to factorize ax^2+bx+c into the form of pqx^2+(qk+mp)x+km=(px+k)(qx+m)
He could only solve the problem in which p,q,m,k are positive numbers. 
Please help him determine whether the expression could be factorized with p,q,m,k being postive.
 

Input

The first line is a number T, means there are T(1 \leq T \leq 100 ) cases 

Each case has one line,the line has 3 numbers a,b,c (1 \leq a,b,c \leq 100000000)
 

Output

You should output the "YES" or "NO".
 

Sample Input

21 6 51 6 4
 

Sample Output

YESNO

Hint

 The first case turn $x^2+6*x+5$ into $(x+1)(x+5)$          
 

Source

BestCoder Round #70





代码:

#include<cstdio>#define LL long longvoid solve(){     LL a,b,c;     scanf("%lld%lld%lld",&a,&b,&c);     LL i,j;     int ga=0,gb=0;     int a1[35000],a2[35000],b1[35000],b2[35000];     for (i=1;i*i<=a;i++)        if (a%i==0)        {            a1[ga]=i;            a2[ga++]=a/i;        }    for (i=1;i*i<=c;i++)    {        if (c%i==0)        {            b1[gb]=i;            b2[gb++]=c/i;        }    }    LL aa,bb;    for (i=0;i<ga;i++)    for (j=0;j<gb;j++)    {        aa=a1[i]*b1[j];        bb=a2[i]*b2[j];        if (aa+bb==b||aa-bb==b||bb-aa==b||-aa-bb==c)        {            printf("YES\n");            return;        }        aa=a1[i]*b2[j];        bb=a2[i]*b1[j];        if (aa+bb==b||aa-bb==b||bb-aa==b||-aa-bb==c)        {            printf("YES\n");            return;        }    }    printf("NO\n");    return ;}int main(){    int t;scanf("%d",&t);    while (t--)    {        solve();    }    return 0;}




0 0
原创粉丝点击