zoukankan      html  css  js  c++  java
  • HDU 5428 The Factor

    题意:给出n个数,问这n个数的乘积中最小的有至少三个因子的因子。

    解法:除了1和质数的正整数都有至少三个因子,所以只要求那个乘积里最小的不为1的非质数因子就可以了,对每个数分解质因子,所有质因子中最小的两个之积即为答案,如果找不到两个质因子则不存在答案。注意longlong!注意longlong!注意longlong!重要的事情说三遍。

    代码:

    #include<stdio.h>
    #include<iostream>
    #include<algorithm>
    #include<string>
    #include<string.h>
    #include<math.h>
    #include<limits.h>
    #include<time.h>
    #include<stdlib.h>
    #include<map>
    #include<queue>
    #include<set>
    #include<stack>
    #include<vector>
    #define LL long long
    
    using namespace std;
    
    int cnt = 0;
    int prime[45000];
    void init()
    {
        bool isprime[45005] = {0};
        for(int i = 2; i <= 45000; i++)
        {
            if(!isprime[i])
            {
                prime[cnt++] = i;
                for(int j = i + i; j <= 45000; j += i)
                    isprime[j] = 1;
            }
        }
    }
    int main()
    {
        init();
        int T;
        while(~scanf("%d", &T))
        {
            while(T--)
            {
                int n;
                int a[105];
                vector <int> v;
                scanf("%d", &n);
                for(int i = 0; i < n; i++)
                {
                    scanf("%d", &a[i]);
                    int j = 0;
                    int x = a[i];
                    int flag = 0;
                    for(j = 0; j < cnt && a[i] >= prime[j]; j++)
                    {
                        while(a[i] % prime[j] == 0)
                        {
                            v.push_back(prime[j]);
                            flag = 1;
                            a[i] /= prime[j];
                        }
                    }
                    if(!flag && x != 1)
                        v.push_back(x);
                }
                sort(v.begin(), v.end());
                //for(int i = 0; i < v.size(); i++)
                    //cout << v[i] << endl;
                if(v.size() < 2) printf("-1
    ");
                else printf("%lld
    ", (LL)v[0] * v[1]);
            }
        }
        return 0;
    }
    

      

  • 相关阅读:
    H5基础
    函数
    分支结构/循环结构
    图解 idea打jar包的步骤
    jmeter查看使用文档后总结
    Ride的使用
    Robot Framework
    jmeter+ant+jenkins
    ant
    Mysql选择合适的数据类型
  • 原文地址:https://www.cnblogs.com/Apro/p/4784808.html
Copyright © 2011-2022 走看看