描述
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;
}