模拟的水题
题目是说,n个人坐一圈,开始每个人都有偶数个糖果,如果不相等,老师吹一次哨,每个人就把一半的糖果给右边的人,如果手里有奇数个糖果,老师会再给一个补成偶数,直到所有人糖果数相同。题目知,最后一定能达到相同状态。
多开了一个数组,每次全部换完糖果后判断一次,用了sort从小到大,如果最小的和最大的相等,就是所有人糖果相等了。
交了就完了,也没再整理,有点。。。
不管怎样,反正是ac了
#include <iostream>
#include <algorithm>
using namespace std;
int num[1005],s[1005];
int main()
{
int n;
while(cin>>n&&n!=0)
{
int temp=0,flag=0;
for(int i=0;i<n;i++)
{
cin>>num[i];
s[i]=num[i];
}
for(int i=0;i<n;i++)
{
if(i==0)
{sort(s,s+n);
if(s[0]==s[n-1])
{
cout<<flag<<" "<<s[0]<<endl;
break;
}
else flag++;
}
num[i]/=2;
int a=num[i];
num[i]+=temp;
if(num[i]%2==1&&i!=0)
num[i]++;
s[i]=num[i];
temp=a;
if(i==n-1)
{
i=0;
num[0]+=temp;
if(num[0]%2==1)
num[0]++;
s[0]=num[0];
temp=0;
i--;
continue;
}
}
}
return 0;
}