80 分,最有一个 sub 两个 WA。
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 5e5+5;
int n,w[N];
map <int,int> m;
int findd(int p){
for(int i=1;i<=n;i++){
if(w[i]==p) return i;
}
}
signed main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>w[i];
for(int j=2;j<=n;j++){
int k=__gcd(w[j],w[j-1]);
if(k==w[j]||k==w[j-1]) continue;
m[k]=1;
}
for(int i=1;i<=n;i++){
if(m[i]||i==1) cout<<n<<" ";
else cout<<n-1<<" ";
}
return 0;
}