1. 程式人生 > >hdu 6025 Coprime Sequence (前後綴GCD)

hdu 6025 Coprime Sequence (前後綴GCD)

view %d problem log gcd amp class names 前綴後綴

題目鏈接:hdu 6025 Coprime Sequence

題意:

給你n個數,讓你刪掉一個數,使得剩下的數的gcd最大

題解:

先將這一列數的前綴後綴gcd預處理一下。

然後挨著for一下就行了

技術分享
 1 #include<bits/stdc++.h>
 2 #define F(i,a,b) for(int i=a;i<=b;++i)
 3 using namespace std;
 4 
 5 const int N=1e5+7;
 6 int t,pre[N],suf[N],n,a[N];
 7 
 8 int main()
 9 {
10     scanf("%d",&t);
11 while(t--) 12 { 13 scanf("%d",&n); 14 F(i,1,n)scanf("%d",a+i); 15 pre[1]=a[1],suf[n]=a[n]; 16 F(i,2,n)pre[i]=__gcd(pre[i-1],a[i]); 17 for(int i=n-1;i>0;i--)suf[i]=__gcd(suf[i+1],a[i]); 18 int mx=0; 19 F(i,2,n-1)mx=max(mx,__gcd(pre[i-1
],suf[i+1])); 20 mx=max(pre[n-1],mx),mx=max(suf[2],mx); 21 printf("%d\n",mx); 22 } 23 return 0; 24 }
View Code

hdu 6025 Coprime Sequence (前後綴GCD)