注意:
初试输入时有奇数。
如果有奇数,自己留一半+1,给别人一半。
偶数正常。
#include<iostream> #include<vector> using namespace std; const int maxn=10001; int a[maxn]; int t[maxn]; bool flag=true; int main(){ int n; while(cin>>n){ if(n==0)break; int sum=0,temp0; for(int i=0;i<n;i++){ cin>>a[i]; if(n==1)continue; if(i==0){ temp0=a[i]; }else{ if(temp0!=a[i]){ flag=false; } } if(a[i]%2!=0){ t[i]=a[i]/2; a[i]=t[i]+1; }else{ a[i]/=2; t[i]=a[i]; } } if(flag){ cout<<0<<" "<<a[0]<<endl;continue; } flag=true; while(flag){ sum++; for(int i=0;i<n;i++){ if(i==0){ a[i]+=t[n-1]; if(a[i]%2!=0)a[i]++; temp0=a[i]; }else{ a[i]+=t[i-1]; if(a[i]%2!=0)a[i]++; } if(temp0!=a[i])flag=false; } if(flag)break; flag=true; for(int i=0;i<n;i++){ a[i]/=2; t[i]=a[i]; } } cout<<sum<<" "<<a[0]<<endl; } return 0; }