(百例编程)75.10个小孩分糖果

来源:互联网 发布:东营区一中知校二维码 编辑:程序博客网 时间:2024/04/30 02:12

题目:十个小孩围成一圈分糖果,老师分给第一个小孩10块,第二个小孩2块,第三个小孩8块,第四个小孩22块,第五个小孩16块,第六个小孩4块,第七个小孩10块,第八个小孩6块,第九个小孩14块,第十个小孩20块。然后所有的小孩同时将手中的糖分一半给右边的小孩;糖块数为奇数的人可向老师要一块。问经过这样几次后大家手中的糖的块数一样多?每人各有多少块糖?

//编程百例75/*题目:十个小孩围成一圈分糖果,老师分给第一个小孩10块,        第二个小孩2块,第三个小孩8块,第四个小孩22块,        第五个小孩16块,第六个小孩4块,第七个小孩10块,        第八个小孩6块,第九个小孩14块,第十个小孩20块。        然后所有的小孩同时将手中的糖分一半给右边的小孩;        糖块数为奇数的人可向老师要一块。问经过这样几次        后大家手中的糖的块数一样多?每人各有多少块糖?*/#include <iostream>using namespace std;int nSweet[10] = {10,2,8,22,16,4,10,6,14,20};bool IsAvr();int main(int argc, char const *argv[]){    while(!IsAvr())    {    for(int i=0;i<10;++i)    {    if(nSweet[i]%2==0)    nSweet[i] = nSweet[i]/2;    else    nSweet[i] = (nSweet[i]+1)/2;    }               int pre = nSweet[9];    for(int j=9;j>0;--j)    {    nSweet[j] = nSweet[j] + nSweet[(j+9)%10];    }    nSweet[0] = nSweet[0] + pre;    }    cout<<"every child have the num of sweet is:"<<nSweet[0]<<endl;return 0;}bool IsAvr(){for (int i = 0; i < 10; ++i){if(nSweet[0]!=nSweet[i])return false;}return true;}


原创粉丝点击