一些学生围绕老是坐着,每人手里都有偶数个糖。现在老师吹一声哨子,所有同学同时将自己的一半糖果给他右边的同学,如果某个同学手里的糖果个数是奇数,则老师给他一个糖果,重复这个过程直到所有同学手中的糖果数一致。
写一个程序判断老师要吹多少下哨子,每人手中的糖果数才能一致,并给出结束后每人手里的糖果数。
程序:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
int a[100000],n,ans=0,sum=0,p,q;
bool eq(int k)
{
int i=1;
while(i<n&&a[i]==a[i+1])
i++;
if(i==n)
return true;
return false;
}
void check()
{
while(!eq(n))
{
ans++;//{吹哨子数增加一次}
q=a[n];
for(int i=1;i<=n;i++)
{
p=a[i];
a[i]=a[i]/2+q/2;
q=p;
if(a[i]%2!=0)
sum++,a[i]++;
}
}//{如果是奇数,老师再给一个,并计数}
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
sum=sum+a[i];
}
printf("%d %d",ans,sum/n);
return 0;
}
时间: 2024-10-10 05:21:03