Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- ifstream fin("cmmdc.in");
- ofstream fout("cmmdc.out");
- int T,N;
- long long a[100005],prefix[100005],suffix[100005];
- int main()
- {
- fin>>T>>N;
- for(int i=1;i<=N;++i)
- fin>>a[i],prefix[i]=__gcd(prefix[i-1],a[i]);
- for(int i=N;i>=1;--i)
- suffix[i]=__gcd(suffix[i+1],a[i]);
- if(T==1)
- {
- fout<<prefix[N]<<'\n';
- return 0;
- }
- if(T==2)
- {
- long long ans=max(suffix[2],prefix[N-1]);
- for(int i=2;i<N;++i)
- ans=max(ans,__gcd(prefix[i-1],suffix[i+1]));
- fout<<ans;
- return 0;
- }
- if(T==3)
- {
- static long long M=0,ans=0,c=0;
- for(int i=1;i<N;++i,c=0)
- for(int j=i+1;j<=N;++j)
- M=__gcd(__gcd(prefix[i-1],suffix[j+1]),c),c=__gcd(c,a[j]),ans=max(ans,M);
- fout<<ans;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement