BestCoder Round #70 1001 Jam's math problem

来源:互联网 发布:2017淘宝双11实时 编辑:程序博客网 时间:2024/05/20 19:29

思路:a,b,c都是10^9,直接相乘会爆int,直接判sqrt(b^2-4ac)是不是为大于等于0的整数即可


#include <cstdio>#include <queue>#include <cstring>#include <iostream>#include <cstdlib>#include <algorithm>#include <vector>#include <map>#include <string>#include <set>#include <ctime>#include <cmath>#include <cctype>using namespace std;#define maxn 100000#define LL long longint cas=1,T;int main(){//freopen("in","r",stdin);scanf("%d",&T);while (T--){LL a,b,c;double ans = 0;scanf("%I64d%I64d%I64d",&a,&b,&c);        LL delta = b*b - 4 * a*c;LL k = 0;bool ok = 1;while ((k+1)*(k+1) <=delta)++k;ok = delta>=0 && k*k==delta;puts(ok?"YES":"NO");}//printf("time=%.3lf",(double)clock()/CLOCKS_PER_SEC);return 0;}






问题描述
Jam有道数学题想向你请教一下,他刚刚学会因式分解比如说,x^2+6x+5=(x+1)(x+5)x2+6x+5=(x+1)(x+5)就好像形如 ax^2+bx+cax2+bx+c => pqx^2+(qk+mp)x+km=(px+k)(qx+m)pqx2+(qk+mp)x+km=(px+k)(qx+m)但是他很蠢,他只会做p,q,m,kp,q,m,k为正整数的题目请你帮助他,问可不可以分解
输入描述
第一行TT,表示T(1 \leq T \leq 100 )T(1T100)组数据。接下来TT组数据:每组数据一行,一个三个整数a,b,ca,b,c,一组数据一行 (1 \leq a,b,c \leq 100000000)(1a,b,c100000000)
输出描述
对于每组数据,输出"YES"或者"NO".
输入样例
21 6 51 6 4
输出样例
YESNO
Hint
第一组数据可以分成(x+1)(x+5)=x^2+6*x+5(x+1)(x+5)=x2+6x+5


0 0
原创粉丝点击