Jam's math problem
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 924 Accepted Submission(s): 444
Problem Description
Jam has a math problem. He just learned factorization.
He is trying to factorize ax2+bx+c into the form of pqx2+(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.
He is trying to factorize ax2+bx+c into the form of pqx2+(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≤T≤100)
cases
Each case has one line,the line has 3 numbers a,b,c(1≤a,b,c≤100000000)
Each case has one line,the line has 3 numbers a,b,c(1≤a,b,c≤100000000)
Output
You should output the "YES" or "NO".
Sample Input
2 1 6 5 1 6 4
Sample Output
YES NOHintThe first case turn $x^2+6*x+5$ into $(x+1)(x+5)$
题意:
给出一个一元二次方程的一般式的a,b,c 的值,问这个方程是否有整数解
题解:
数学知识:如果一个一元二次方程的判别式是一个整数的完全平方式,那么这个方程必定有整数解(也许这真是个结论吧,网上搜到的此类信息也不多)
/*
一元二次方程有整数解的条件是:
判别式是完全平方数或者完全平方式!
*/
#include<stdio.h>
#include<math.h>
typedef long long ll;
int slove(ll a,ll b,ll c)
{
ll dot=b*b-4*a*c;
if(dot<0)
{
return 0;
}
ll tp=sqrt(dot*1.0);
return tp*tp==dot;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("%s\n",slove(a,b,c)?"YES":"NO");
}
return 0;
}