zoukankan      html  css  js  c++  java
  • 分糖果

    问题描述
      有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:

      每个小朋友都把自己的糖果分一半给左手边的孩子。

      一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。

      反复进行这个游戏,直到所有小朋友的糖果数都相同为止。

      你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。
    输入格式
      程序首先读入一个整数N(2<N<100),表示小朋友的人数。
      接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2)
    输出格式
      要求程序输出一个整数,表示老师需要补发的糖果数。
    样例输入
    3
    2 2 4
    样例输出
    4
     
    这数据量不大,可以模拟。
     1 #include <iostream>
     2 
     3 using namespace std;
     4 int n;
     5 int vis[105];
     6 int an[105];
     7 int main(){
     8     cin>>n;
     9     int cnt = 0;
    10     for(int i=0;i<n;i++)
    11         cin>>vis[i];
    12     bool prime = true;
    13     while(prime){
    14         int a = vis[0];
    15         for(int i=0;i<n;i++){
    16             if(i==n-1){
    17                 vis[i]=(vis[i]+a)/2;
    18                 break;
    19             }
    20             vis[i] = (vis[i]+vis[i+1])/2;
    21         }
    22         for(int i=0;i<n;i++){
    23             if(vis[i]%2==1){
    24                 cnt++;
    25                 vis[i]++;
    26             }
    27         }
    28         bool flag = true;
    29         for(int i=1;i<n;i++){
    30             if(vis[0]!=vis[i]){
    31                 flag = false;
    32                 break;
    33             }
    34         }
    35         if(flag)
    36             prime = false;
    37     }
    38     cout<<cnt<<endl;
    39     return 0;
    40 }
     
  • 相关阅读:
    [JLOI2010] 冠军调查
    [ZJOI2009] 狼和羊的故事
    [CF1451D] Circle Game
    [CF1451E1] Bitwise Queries (Easy Version)
    [CF343D] Water Tree
    [CF1344B] Monopole Magnets
    [CF191C] Fools and Roads
    [CF1370D] Odd-Even Subsequence
    [CF1366D] Two Divisors
    [CF1359D] Yet Another Yet Another Task
  • 原文地址:https://www.cnblogs.com/zllwxm123/p/8525606.html
Copyright © 2011-2022 走看看