分糖果、、

描述

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 
#include 
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;
}

你可能感兴趣的:(ACM作业,c++)