http://acm.hdu.edu.cn/showproblem.php?pid=1034 模拟题
View Code
1 #include<iostream>
2 using namespace std;
3 int a[100000];
4 int b[100000];//a的一半
5 int n;
6 int main()
7 {
8 while(cin>>n && n)
9 {
10 int i;
11 for(i=0;i<n;i++) cin>>a[i];
12 int num=0;
13 while(true)
14 {
15 for(i=0;i<n;i++)//if a[i] is odd,then get another one
16 {
17 if(a[i]&1) a[i]++;
18 }
19 bool flag=false;
20 for(i=0;i<n;i++)
21 {
22 if(a[i]!=a[(i+1+n)%n]) { flag=true;break; }
23 }
24 if(!flag) break;//都相等了
25 for(i=0;i<n;i++) a[i]/=2,b[i]=a[i];
26 for(i=0;i<n;i++) a[i]+=b[(i-1+n)%n];//自己的一半给右边
27 num++;
28 //for(i=0;i<n;i++) cout<<a[i]<<" ";
29 //cout<<endl;
30 //system("pause");
31 }
32 cout<<num<<" "<<a[0]<<endl;
33 }
34 return 0;
35 }