题干

 
c++实现
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<vector>
using namespace std;
void ShareCandy(vector<int>& student) {
	int size = student.size();
	vector<int> share(size); //保存每个同学交换前,糖果数量的一半
	for (int i = 0; i < size; i++) {
		share[i] = student[i] / 2;
	}
	for (int i = 0; i < size; i++)
	{
		student[i] -= share[i];
		student[(i + 1) % size] += share[i];
	}
	for (int i = 0; i < size; i++)
	{
		if (student[i] % 2 == 1) {
			++student[i];
		}
	}
}
bool CheckCandy(vector<int>& student) {
	int first = student[0];
	for (int i = 1; i < student.size(); ++i) {
		if (first != student[i]) {
			return false;
		}
	}
	return true;
}
int main() {
	int N;
	while (scanf("%d", &N) != EOF) {
		if (N == 0) {
			break;
		}
		vector<int> student(N);
		for (int i = 0; i < N; i++) {
			scanf("%d", &student[i]);
		}
		int turn = 0;
		while (CheckCandy(student) == false) {
			ShareCandy(student);
			++turn;
		}
		printf("%d %d\n", turn, student[0]);
	}
	return 0;
}



















![[css] 让文字进行竖着 分散对齐](https://img-blog.csdnimg.cn/direct/8a22e4a9ed92497e9a08ff341c0f8a1a.png)