Untitled
unknown
plain_text
a year ago
1.4 kB
6
Indexable
#include <stdio.h>
int n;
int array[200001];
int gcd(int a, int b) {
if (b == 0) return a;
return gcd(b, a%b);
}
int main() {
scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%d", &array[i]);
int answer = 0; // The variable to store the answer
// Why not we just skip the number that we don't want
// Say i is the index of number we don't want
for (int i = 0; i < n; i++) {
int gcd_value; // Used to store the gcd of the sequence
// Initialization of gcd_value
// it will be the gcd of first two elements in the
// subsequence
if (i == 0) {
gcd_value = gcd(array[1], array[2]);
for (int j = 3; j < n; j++)
gcd_value = gcd(gcd_value, array[j]);
}
else if (i == 1) {
gcd_value = gcd(array[0], array[2]);
for (int j = 3; j < n; j++)
gcd_value = gcd(gcd_value, array[j]);
}
else {
// i >= 2
gcd_value = gcd(array[0], array[1]);
for (int j = 2; j < n; j++)
if (i != j)
gcd_value = gcd(gcd_value, array[j]);
}
// Here, gcd_value is the gcd of the subsequence of removing a[i]
if (gcd_value > answer)
answer = gcd_value;
}
printf("%d\n", answer);
return 0;
}Editor is loading...
Leave a Comment