点击打开链接
模拟就过了。
#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; }