zoukankan      html  css  js  c++  java
  • ccpc 女生专场 C

    Do you know what is called ``Coprime Sequence''? That is a sequence consists of nnpositive integers, and the GCD (Greatest Common Divisor) of them is equal to 1. 
    ``Coprime Sequence'' is easy to find because of its restriction. But we can try to maximize the GCD of these integers by removing exactly one integer. Now given a sequence, please maximize the GCD of its elements.

    InputThe first line of the input contains an integer T(1T10)T(1≤T≤10), denoting the number of test cases. 
    In each test case, there is an integer n(3n100000)n(3≤n≤100000) in the first line, denoting the number of integers in the sequence. 
    Then the following line consists of nn integers a1,a2,...,an(1ai109)a1,a2,...,an(1≤ai≤109), denoting the elements in the sequence.
    OutputFor each test case, print a single line containing a single integer, denoting the maximum GCD.Sample Input

    3
    3
    1 1 1
    5
    2 2 2 3 2
    4
    1 2 4 8

    Sample Output

    1
    2
    2

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<cmath>
    #include<utility>
    #include<set>
    #include<vector>
    #include<map>
    #include<queue>
    #include<stack>
    #define maxn 110
    #define INF 0x3f3f3f3f
    #define LL long long
    #define ULL unsigned long long
    #define E 1e-8
    #define mod 100000000
    using namespace std;
    #define raf(i,k,n) for(int i=k;i<=n;i++)
    //Oo0Oooo00ooOoo00oO
    int gcd(int a,int b)
    {
        return b==0?a:gcd(b,a%b);
    }
    int a[100005];
    int dp1[100005],dp2[100005];
    int main()
    {
        int t;
        cin>>t;
        while(t--)
        {
            int n;
            cin>>n;
            for(int i = 0 ; i < n ; i++ )   cin>>a[i];
            dp1[0]  = a[0];
            for(int i = 1 ; i < n ; i++ )   dp1[i] = gcd(dp1[i-1],a[i]);
            dp2[n-1] = a[n-1];
            for(int i = n-2 ; i >= 0 ; i--)  dp2[i] = gcd(dp2[i+1],a[i]);
            int ma = max(dp2[1],dp1[n-2]);
            //cout<<"dp2 "<<dp2[n-2];
            for(int i=1;i<n-1;i++)
    
                ma = max(gcd(dp1[i-1] , dp2[i+1] ), ma);
    
            cout<<ma<<endl;
        }
        return 0;
    }
    

      



  • 相关阅读:
    2019-01-28 dubbo安装并启动测试
    JAVAWEB项目获取服务器、项目相关路径方法
    Hibernate中的查询方式
    Hibernate在eclipse中的简单运用
    JQuery Tips(2)----关于$()包装集你不知道的
    JQuery Tips(3)----关于$()包装集内元素的改变
    JQuery Tips(4)----一些关于提高JQuery性能的Tips
    利用FireBug使JQuery的学习更加轻松愉快
    asp.net core2 mvc 基础教程--中间件
    asp.net core2 mvc 基础教程--服务注册和管道
  • 原文地址:https://www.cnblogs.com/upstart/p/8969654.html
Copyright © 2011-2022 走看看