• HDU Problem 5615 Jam's math problem 【十字交叉,暴力】


    Jam's math problem

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
    Total Submission(s): 1353    Accepted Submission(s): 610

    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.
     
    Input
    The first line is a number T, means there are T(1T100) cases 

    Each case has one line,the line has 3 numbers a,b,c(1a,b,c100000000)
     
    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
     
    Recommend
    hujie   |   We have carefully selected several similar problems for you:  5867 5866 5865 5864 5863 
     
    #include <map>
    #include <set>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <queue>
    #include <iostream>
    #include <stack>
    #include <cmath>
    #include <vector>
    #include <cstdlib>
    //#include <bits/stdc++.h>
    #define space " "
    using namespace std;
    //typedef long long LL;
    typedef __int64 Int;
    typedef pair<int,int> paii;
    const int INF = 0x3f3f3f3f;
    const double ESP = 1e-5;
    const double Pi = acos(-1);
    const int MOD = 1e9+5;
    const int MAXN = 1e5 + 10;
    Int a, b, c;
    int main() {
        int T;
        cin >> T;
        while (T--) {
            cin >> a >> b >> c;
            bool flag = false;
            if (b*b < 4*a*c) {
                cout << "NO" << endl;
            }
            else {
                Int sa = sqrt(a), sc = sqrt(c);
                for (int i = 1; i <= sa; i++) {
                    if (a%i) continue;
                    for (int j = 1; j <= sc; j++) {
                        if (c%j == 0) {
                            Int x = a/i, y = c/j;
                            if ((i*j + x*y) == b || (i*y + j*x) == b) {
                                flag = true; break;
                            }
                        }
                    }
                    if (flag) break;
                }
                if (flag)   cout << "YES" <<endl;
                else    cout << "NO" << endl;
            }
        }
        return 0;
    }
     
    
    
    
  • 相关阅读:
    杜教筛学习笔记
    AtCoder Beginner Contest 188 F
    求和公式
    洛谷P4848 崂山白花蛇草水 权值线段树+KDtree
    二次剩余学习笔记
    Miller Rabin素数检测与Pollard Rho算法
    半平面交学习笔记
    凸包习题总结
    多项式半家桶
    CF997解题报告
  • 原文地址:https://www.cnblogs.com/cniwoq/p/6770806.html
Copyright © 2020-2023  润新知