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

    有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:
    
    每个小朋友都把自己的糖果分一半给左手边的孩子。
    
    一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。
    
    反复进行这个游戏,直到所有小朋友的糖果数都相同为止。
    
    你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。

    【格式要求】

    程序首先读入一个整数N(2<N<100),表示小朋友的人数。
    接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2)
    要求程序输出一个整数,表示老师需要补发的糖果数。

    例如:输入

    3
    2 2 4
    

    程序应该输出:

    4
    

    资源约定:

    峰值内存消耗(含虚拟机) < 256M

    CPU消耗 < 1000ms

    请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

    所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

    注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。

    注意:主类的名字必须是:Main,否则按无效代码处理。

    按照题目要求进行操作,直到满足情况为止。

    代码:

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    
    using namespace std;
    
    int main() {
        int n,c = 0;
        int a[100],b[100];
        scanf("%d",&n);
        for(int i = 0;i < n;i ++) {
            scanf("%d",&a[i]);
            b[i] = a[i] /= 2;
        }
        bool flag = 0;
        while(!flag) {
            for(int i = 0;i < n;i ++) {
                a[i] += b[(i + 1) % n];
                if(a[i] % 2) a[i] ++,c ++;
                a[i] /= 2;
            }
            for(int i = 0;i < n;i ++) {
                b[i] = a[i];
                flag |= a[(i + 1) % n] - a[i];
            }
            flag ^= 1;
        }
        printf("%d",c);
    }
    import java.util.Scanner;
    
    public class Main {
        private static Scanner sc = new Scanner(System.in);
        public static void main(String[] args) {
            int n,c = 0;
            int [] a = new int[100];
            int [] b = new int[100];
            n = sc.nextInt();
            for(int i = 0;i < n;i ++) {
                a[i] = sc.nextInt();
                b[i] = a[i] /= 2;
            }
            boolean flag = false;
            while(!flag) {
                for(int i = 0;i < n;i ++) {
                    a[i] += b[(i + 1) % n];
                    if(a[i] % 2 == 1) {
                        a[i] ++;
                        c ++;
                    }
                    a[i] /= 2;
                }
                for(int i = 0;i < n;i ++) {
                    b[i] = a[i];
                    flag |= (a[(i + 1) % n] != a[i]);
                }
                flag ^= true;
            }
            System.out.println(c);
        }
    
    }
  • 相关阅读:
    LeetCode 275. H-Index II
    LeetCode 274. H-Index
    LeetCode Gray Code
    LeetCode 260. Single Number III
    LeetCode Word Pattern
    LeetCode Nim Game
    LeetCode 128. Longest Consecutive Sequence
    LeetCode 208. Implement Trie (Prefix Tree)
    LeetCode 130. Surrounded Regions
    LeetCode 200. Number of Islands
  • 原文地址:https://www.cnblogs.com/8023spz/p/10486821.html
Copyright © 2011-2022 走看看