有10个小朋友围成一圈分糖果,老师顺次分给每人一定数量糖果(初始值为偶数)然后按照下列规则调整,所有小朋友同时把自己的糖果分一半给右边的人,糖果数变为奇数的人,向老师补要一块糖果,问经过多少次调整后,大家糖果数一样多,且每人多少块。建立两个函数,一个负责传递糖果,一个负责判断所有人的糖果是否相等。
注意:是同时
输入样例
12 2 8 22 16 4 10 6 14 20
输出样例
16 18
输入样例
4 4 4 4 4 4 4 4 4 10
输出样例
11 8
#include<bits/stdc++.h>
using namespace std;
int a[10],c[10];
void dd()
{
for(int t=0;t<10;t++)c[t]=a[t]/2;
for(int t=0;t<10;t++){
a[t]+=c[(t+9)%10]-a[t]/2;
if(a[t]%2==1)a[t]++;//补成偶数
}
}
int flag()//判断糖果数是否相等
{
for(int t=1;t<10;t++){
if(a[t]!=a[0]) return 0;
}
return 1;
}
int main()
{
int k=0;
for(int t=0;t<10;t++)cin>>a[t];
while(1){
if(flag()==1)break;//完成
dd();//调整
k++;//记录调整次数
}
cout<<k<<" "<<a[0];
}