1 solutions

  • 0
    @ 2025-11-5 19:55:58

    C++ :

    //题目说的是一个分糖果的游戏,n个学生围成一圈,每个人手上有a[i]个糖果,每一轮游戏开始时,学生手中的糖果都是偶数,他们都把自己手中一半的糖果分给他右边的同学。分完后手中糖果数是奇数的,老师会给他一颗糖果。如果所有人手中的糖果数都一样 游戏结束。
    //    输出总共进行了多少轮游戏 还有最后学生手中的糖果数。
    #include "stdio.h"
    int main()
    {
       int n,a[1000],s[1000];
       while(1)
       {
         scanf("%d",&n);
         if(n==0)
             break;
         int i;
         for(i=0;i<n;i++)   //初始化
       scanf("%d",&s[i]);
         int count=0;
         while(1) //开始吹口哨
         {
            for(i=0;i<n;i++)
            {
               if(s[i]%2==1)
                   a[i]=s[i]+1;
               else
                   a[i]=s[i];
            }
           for(i=0;i<n-1;i++)
                if(a[i]!=a[i+1])
                    break;
             if(i==n-1)
                 break;
            for(i=1;i<=n;i++)
            {
                s[i%n]=a[i%n]/2+a[i-1]/2;
            }
            count++;
         }
    printf("%d %d\n",count,a[0]);
        
       }
       return 1;
    }
    
    • 1

    Information

    ID
    19841
    Time
    1000ms
    Memory
    32MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By