hdoj 6025 Coprime Sequence

来源:互联网 发布:淘宝无线视频看不到了 编辑:程序博客网 时间:2024/06/05 03:56

题目链接:Coprime Sequence


题目大意:给你n个数,这n个数的总gcd为1,删除某一个数会得到一个新的gcd,问你所有新的总gcd里面最大的是多少


题目思路:傻逼题,写了半天,结果发现是个水题,直接处理某个点前缀总gcd和后缀总gcd,然后枚举每个点的时候两部分gcd一下就好

#include <bits/stdc++.h>using namespace std;int t,n,a[100006],l[100006],r[100006];int main(){    scanf("%d",&t);    while(t--){        scanf("%d",&n);        for(int i = 0;i < n;i++)            scanf("%d",&a[i]);        l[0] = a[0];        for(int i = 1;i < n;i++)            l[i] = __gcd(a[i],l[i-1]);        r[n-1] = a[n-1];        for(int i = n-2;i >= 0;i--)            r[i] = __gcd(a[i],r[i+1]);        int ans,maxx = -1;        maxx = max(maxx,r[1]);        maxx = max(maxx,l[n-2]);        for(int i = 1;i < n-1;i++){            ans = __gcd(l[i-1],r[i+1]);            maxx = max(ans,maxx);        }        printf("%d\n",maxx);    }    return 0;}


0 0
原创粉丝点击