分糖果

发布时间 2023-05-08 20:14:11作者: 笠大

问题描述

10个小孩围成一圈分糖果,老师分给第1个小孩10块,第2个小孩2块,第3个小孩8块,第4个小孩22块,第5个小孩16块,第6个小孩4块,第7个小孩10块,第8个小孩6块,第9个小孩14块,第10个小孩20块。然后所有的小孩同时将手中的糖分一半给右边的小孩;糖块数为奇数的人可向老师要一块。问经过这样几次后大家手中的糖块数一样多吗?每人各有多少块糖?

代码:


#include<iostream>
using namespace std;
int Judge(int s[]) {

	for (int i = 0; i < 10; i++) {
		if (s[0] != s[i]) {
			return 1;
		}	
		
	}
	return 0;
}
void Print(int a[]) {

	for (int i = 0; i < 10; i++) {
		cout << a[i] << "  ";
	}
	cout << endl << endl;
}
int main()
{
	int s[10] = { 10,2,8,22,16,4,10,6,14,20 };
	int t[10];
	while (Judge(s)) {
		for (int i = 0; i < 10; i++) 
			if (s[i] % 2 != 0) {
				t[i] = s[i] = (s[i] + 1) / 2;
			}
			else {
				t[i] = s[i] = s[i] / 2;
			}


			for (int i = 0; i < 9; i++) 
				s[i + 1] += t[i];

			
			s[0] += t[9];
			Print(s);
		}
	
	cout << s[0] << endl;
	return 0;


}

image