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
",cnt,a[0]);
37     }
38     return 0;
39 }
View Code
原文地址:https://www.cnblogs.com/yours1103/p/3281536.html