HDU 5615 Jam's math problem <数学>

本文介绍了一个具体的数学问题——将特定形式的二次多项式进行因式分解的方法。文章详细阐述了如何通过寻找合适的正整数因子来判断是否能将给定的二次多项式分解为两个一次多项式的乘积。

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

Time Limit: 1000MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I64u

 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

    
2 1 6 5 1 6 4
 

Sample Output

    
YES NO

Hint

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

Source

BestCoder Round #70





代码:

#include<cstdio>
#define LL long long
void 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;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值