/**
* Project Name: P65
* File Name: 51.cpp
* Created on: 2015年4月6日 上午11:34:45
* Author: jtahstu
* Copyright (c) 2015, jtahstu , All Rights Reserved.
*/
//51 10个小孩分糖果<span id="transmark"></span>
//十个小孩围成一圈分糖果,老师分给第一个小孩10块,第二个小孩2块,第三个小孩8块,第四个小孩22块,第五个小孩16块,第六个小孩4块,
//第七个小孩10块,第八个小孩6块,第九个小孩14块,第十个小孩20块。
//然后所有的小孩同时将手中的糖分一半给右边的小孩;糖块数为奇数的人可向老师要一块。问经过这样几次后大家手中的糖的块数一样多?每人各有多少块糖?
//*运行结果
// child
// r 1 2 3 4 5 6 7 8 9 10
// 0 10 2 8 22 16 4 10 6 14 20
// 1 15 6 5 15 19 10 7 8 10 17
// 2 17 11 6 11 18 15 9 8 9 14
// 3 16 15 9 9 15 17 13 9 9 12
// 4 14 16 13 10 13 17 16 12 10 11
// 5 13 15 15 12 12 16 17 14 11 11
// 6 13 15 16 14 12 14 17 16 13 12
// 7 13 15 16 15 13 13 16 17 15 13
// 8 14 15 16 16 15 14 15 17 17 15
// 9 15 15 16 16 16 15 15 17 18 17
// 10 17 16 16 16 16 16 16 17 18 18
// 11 18 17 16 16 16 16 16 17 18 18
// 12 18 18 17 16 16 16 16 17 18 18
// 13 18 18 18 17 16 16 16 17 18 18
// 14 18 18 18 18 17 16 16 17 18 18
// 15 18 18 18 18 18 17 16 17 18 18
// 16 18 18 18 18 18 18 17 17 18 18
// 17 18 18 18 18 18 18 18 18 18 18
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
int main51() {
int count = 0;
int a[11] = { 10, 2, 8, 22, 16, 4, 10, 6, 14, 20 };
while (true) {
int a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5],
a6 = a[6], a7 = a[7], a8 = a[8], a9 = a[9]; //这里需要先保存数据,不然上一个数会被改变,下一个数就无法计算了
a[0] = a9 / 2 + a[0] / 2;
a[1] = a0 / 2 + a[1] / 2;
a[2] = a1 / 2 + a[2] / 2;
a[3] = a2 / 2 + a[3] / 2;
a[4] = a3 / 2 + a[4] / 2;
a[5] = a4 / 2 + a[5] / 2;
a[6] = a5 / 2 + a[6] / 2;
a[7] = a6 / 2 + a[7] / 2;
a[8] = a7 / 2 + a[8] / 2;
a[9] = a8 / 2 + a[9] / 2;
for (int i = 0; i < 10; i++)
cout << a[i] << " ";
cout << endl;
for (int i = 0; i < 10; i++) {//奇数则++
if (a[i] % 2 == 1)
a[i]++;
}
count++;
int s = 1;
for (int i = 0; i < 9; i++)//判断是否都相等
if (a[i] == a[i + 1])
s++;
if (s == 10) {
cout << count + 1 << "次:到达" << a[0] << endl; //count++代表最后一次计算结束,退出
return 0;
}
}
return 0;
}