您的位置:首页 > 产品设计 > UI/UE

hdoj 6025 Coprime Sequence

2017-05-08 17:17 453 查看
题目链接: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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: