描述
10个小孩围成一圈分糖果,老师分给第1个小孩10块,第2个小孩2块,第3个小孩8块,第4个小孩22块,第5个小孩16块,第6个小孩4块,第7个小孩10块,第8个小孩6块,第9个小孩14块,第10个小孩20块。然后所有的小孩同时将手中的糖分一半给右边的小孩,糖块为奇数的可向老师再要一块。问这样的操作经过几次,大家手中的糖一样多?每人有多少块糖?
输入
无
输出
输出答案
输入样例 1
无
输出样例 1
Child No. 1 2 3 4 5 6 7 8 9 10 ------------------------------------------------------Round No.|< 0> | 10 2 8 22 16 4 10 6 14 20< 1> | 16 6 6 16 20 10 8 8 10 18< 2> | 18 12 6 12 18 16 10 8 10 14< 3> | 16 16 10 10 16 18 14 10 10 12< 4> | 14 16 14 10 14 18 16 12 10 12< 5> | 14 16 16 12 12 16 18 14 12 12< 6> | 14 16 16 14 12 14 18 16 14 12< 7> | 14 16 16 16 14 14 16 18 16 14< 8> | 14 16 16 16 16 14 16 18 18 16< 9> | 16 16 16 16 16 16 16 18 18 18<10> | 18 16 16 16 16 16 16 18 18 18<11> | 18 18 16 16 16 16 16 18 18 18<12> | 18 18 18 16 16 16 16 18 18 18<13> | 18 18 18 18 16 16 16 18 18 18<14> | 18 18 18 18 18 16 16 18 18 18<15> | 18 18 18 18 18 18 16 18 18 18<16> | 18 18 18 18 18 18 18 18 18 18 ------------------------------------------------------
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{int child[11] = { 0,10,2,8,22,16,4,10,6,14,20 },a[11];int n=0,i,equal=1;cout << setw(11) << "Child No.";for (i = 1; i < 10; i++){cout << setw(4) << i;}cout << setw(5) << "10";cout << endl;cout<< "------------------------------------------------------";cout << endl;cout << setw(11) << "Round No." << "|" << endl;cout << setw(8) << "<" << setw(2) << n << ">" << "|" ;for (i = 1; i <= 10; i++){cout << setw(4) << child[i];}cout << endl;while (equal==1){n++;for (i = 1; i <= 10; i++){a[i] = child[i] / 2;child[i] = child[i] / 2;}for (i = 1; i <= 10; i++){if (i == 1)child[i] += a[10];else child[i] += a[i - 1];}for (i = 1; i <= 10; i++){if (child[i] % 2 != 0)child[i] += 1;} for (i = 1; i < 10; i++){if (child[i] == child[i + 1])equal = 0;else{equal = 1; break;}}cout << setw(8) << "<" << setw(2) << n << ">" << "|";for (i = 1; i <= 10; i++){cout << setw(4) << child[i];}cout << endl;}cout << "------------------------------------------------------";return 0;
}