80 pts,不知道是思路出问题还是其他的什么。最后一个 Subtask 的头两个点 WA。
求调。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[5000005];
ll ans[5000005];
ll vis[5000005];
int main(){
ll n;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<n;i++){
ll now=__gcd(a[i],a[i+1]);
if(a[i]!=now&&a[i+1]!=now){
vis[now]++;
}
}
ans[1]=n;
for(int i=2;i<=n;i++){
if(vis[i]!=0){
ans[i]=n;
}
}
for(int i=1;i<=n;i++){
if(ans[i]!=n) cout<<n-1<<" ";
else{
cout<<n<<" ";
}
}
}