HDU 6025 Coprime Sequence

枚举,预处理。

预处理前缀$gcd$与后缀$gcd$,枚举删哪一个即可。

#include <bits/stdc++.h>
using namespace std;

int T,n;
long long a[100010];
long long L[100010];
long long R[100010];

long long gcd(long long a,long long b)
{
    if(b==0) return a;
    return gcd(b,a%b);
}

int main()
{
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            scanf("%lld",&a[i]);
        }

        for(int i=1;i<=n;i++)
        {
            L[i] = gcd(L[i-1],a[i]);
        }

        for(int i=n;i>=1;i--)
        {
            R[i] = gcd(R[i+1],a[i]);
        }

        long long ans=0;

        for(int i=1;i<=n;i++)
        {
            ans=max(ans,gcd(L[i-1],R[i+1]));
        }

        printf("%lld\n",ans);

    }
    return 0;
}

 

posted @ 2017-05-07 17:59  Fighting_Heart  阅读(132)  评论(0编辑  收藏  举报