poj 1666
简单模拟:
1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 int n,m,cnt; 5 int a[1010],b[1010]; 6 7 inline bool judge() 8 { 9 for(int i=0;i<n;i++) 10 if(a[0]!=a[i]) return false; 11 return true; 12 } 13 14 int main() 15 { 16 while(scanf("%d",&n)==1) 17 { 18 if(n==0) return 0; 19 memset(a,0,sizeof a); 20 memset(b,0,sizeof b); 21 for(int i=0; i<n; i++) 22 scanf("%d",&a[i]); 23 cnt=0; 24 while(1) 25 { 26 for(int i=0; i<n; i++) 27 if(a[i]&1) 28 a[i]++; 29 if(judge()) break; 30 b[0]=a[0]/2+a[n-1]/2; 31 for(int i=1; i<n; i++) 32 b[i]=a[i]/2+a[i-1]/2; 33 memcpy(a,b,sizeof b); 34 cnt++; 35 } 36 printf("%d %d\n",cnt,a[0]); 37 } 38 return 0; 39 }