BestCoder Round #70 1001 Jam's math problem

本文介绍了一种解决形如 ax^2 + bx + c 的二次方程的算法,通过判断判别式的正负来决定方程是否可分解为两个一次多项式的乘积,特别适用于 p, q, m, k 为正整数的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思路: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 long
int 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".
输入样例
2
1 6 5
1 6 4
输出样例
YES
NO
Hint
第一组数据可以分成(x+1)(x+5)=x^2+6*x+5(x+1)(x+5)=x2+6x+5


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值