模拟就过了。
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <map>
#include <math.h>
#define LL long long
using namespace std;
const int maxn=1e2+10;
const int mod=1e9+7;
int a[maxn],b[maxn];
int v[2000]={0},f=0;
int main(){
int n,ans=0;
scanf("%d",&n);
for(int i=0;i<n;++i){
scanf("%d",&a[i]);
v[a[i]]++;
if(v[a[i]]==n) f=1;
}
while(1){
if(f) break;
for(int i=0;i<n;++i) b[i]=a[i]/2;
memset(v,0,sizeof(v));
for(int i=0;i<n;++i){
if(i==n-1){
a[i]=b[i]+b[0];
if(a[i]&1) a[i]+=1,ans++;
v[a[i]]++;
if(v[a[i]]==n) {
f=1; break;
}
}else{
a[i]=b[i]+b[i+1];
if(a[i]&1) a[i]+=1,ans++;
v[a[i]]++;
if(v[a[i]]==n) {
f=1; break;
}
}
}
}
printf("%d\n",ans);
return 0;
}