P65-10个小孩分糖果

/**
 * 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;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值