You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
1.3 KiB

2 years ago
#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
//最大公约数
int gcd(int x, int y) {
return y ? gcd(y, x % y) : x;
}
const int N = 1e6 + 10;
int a[N], Left[N], Right[N];
int n;
/**
* ++
*
*
*/
/**
*
5
12 36 24 18 48
* @return
*/
int main() {
cin >> n;
for (int i = 1; i <= n; i++)cin >> a[i];
//生成left数组
Left[1] = a[1];
for (int i = 2; i <= n; i++) Left[i] = gcd(Left[i - 1], a[i]);
//生成right数组
Right[n] = a[n];
for (int i = n - 1; i >= 1; i--)Right[i] = gcd(a[i], Right[i + 1]);
//输出调试结果
//for (int i = 1; i <= n; i++) cout << Left[i] << " ";
//cout << endl;
//for (int i = 1; i <= n; i++) cout << Right[i] << " ";
//cout << endl;
//输出ans
//删除第一个
cout << Right[1 + 1] << " ";
//删除中间的
for (int i = 2; i < n; i++)
cout << gcd(Left[i - 1], Right[i + 1]) << " ";
//删除最后一个
cout << Left[n - 1] << endl;
return 0;
}