zoukankan      html  css  js  c++  java
  • HDU 2710 Max Factor 数论 (水

    Max Factor
    Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u
     

    Description

    To improve the organization of his farm, Farmer John labels each of his N (1 <= N <= 5,000) cows with a distinct serial number in the range 1..20,000. Unfortunately, he is unaware that the cows interpret some serial numbers as better than others. In particular, a cow whose serial number has the highest prime factor enjoys the highest social standing among all the other cows. 

    (Recall that a prime number is just a number that has no divisors except for 1 and itself. The number 7 is prime while the number 6, being divisible by 2 and 3, is not). 

    Given a set of N (1 <= N <= 5,000) serial numbers in the range 1..20,000, determine the one that has the largest prime factor. 

    Input

    * Line 1: A single integer, N 

    * Lines 2..N+1: The serial numbers to be tested, one per line

    Output

    * Line 1: The integer with the largest prime factor. If there are more than one, output the one that appears earliest in the input file.

    Sample Input

    4
    36
    38
    40
    42

    Sample Output

    38


    比较水xjb做
    新风格不错 以后就这样写了

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <algorithm>
    #include <queue>
    #include <vector>
    #include <iomanip>
    #include <math.h>
    #include <map>
    using namespace std;
    #define FIN     freopen("input.txt","r",stdin);
    #define INF     0x3f3f3f3f
    #define lson    l,m,rt<<1
    #define rson    m+1,r,rt<<1|1
    typedef long long LL;
    
    const int MAXN=20005;
    
    int p[MAXN];
    
    int main()
    {
        //FIN
        p[1]=1;
        int cou=0;
        for(int i=2; i<=20005; i++)
        {
            if(p[i]==0)
            {
                cou++;
                for(int j=i; j<=20005; j=j+i)
                {
                    p[j]=cou;
                }
            }
        }
        int n;
        while(~scanf("%d",&n))
        {
            int ans=0,pos;
            int x;
            for(int i=1;i<=n;i++){
                scanf("%d",&x);
                if(p[x]>ans)  {ans=p[x];pos=x;}
            }
            printf("%d
    ",pos);
    
        }
    
    }
    

      

  • 相关阅读:
    HDU 1075 What Are You Talking About(字典树)
    HDU 1075 What Are You Talking About (stl之map映射)
    HDU 1247 Hat’s Words(字典树活用)
    字典树HihoCoder
    HDU 1277全文检索(字典树)
    HDU 3294 Girls' research(manachar模板题)
    HDU 3294 Girls' research(manachar模板题)
    HDU 4763 Theme Section(KMP灵活应用)
    Ordering Tasks UVA
    Abbott's Revenge UVA
  • 原文地址:https://www.cnblogs.com/Hyouka/p/5727599.html
Copyright © 2011-2022 走看看