【蓝桥杯】历届试题 分糖果
历届试题 分糖果
时间限制:1.0s 内存限制:256.0MB
问题描述
有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:
每个小朋友都把自己的糖果分一半给左手边的孩子。
一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。
反复进行这个游戏,直到所有小朋友的糖果数都相同为止。
你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。
每个小朋友都把自己的糖果分一半给左手边的孩子。
一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。
反复进行这个游戏,直到所有小朋友的糖果数都相同为止。
你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。
输入格式
程序首先读入一个整数N(2<N<100),表示小朋友的人数。
接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2)
接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2)
输出格式
要求程序输出一个整数,表示老师需要补发的糖果数。
样例输入
3
2 2 4
2 2 4
样例输出
4
Java源代码:
1 import java.util.Scanner; 2 3 public class Main { 4 5 static int count = 0; 6 7 private static void fun(int[] stu) { 8 boolean y = false; 9 for (int i = 0; i < stu.length - 1; i++) { 10 if (stu[i] != stu[i + 1]) { 11 y = true; 12 break; 13 } 14 } 15 if (y) { 16 int fi = stu[0] = stu[0] / 2; 17 for (int i = 1; i < stu.length; i++) { 18 stu[i - 1] += stu[i] / 2; 19 stu[i] /= 2; 20 } 21 stu[stu.length - 1] += fi; 22 for (int i = 0; i < stu.length; i++) { 23 if (stu[i] % 2 == 1) { 24 stu[i]++; 25 count++; 26 } 27 } 28 fun(stu); 29 } 30 } 31 32 public static void main(String[] args) { 33 Scanner in = new Scanner(System.in); 34 int n = in.nextInt(); 35 int[] stu = new int[n]; 36 for (int i = 0; i < stu.length; i++) { 37 stu[i] = in.nextInt(); 38 } 39 fun(stu); 40 System.out.println(count); 41 } 42 43 }
评测点序号 | 评测结果 | 得分 | CPU使用 | 内存使用 | 下载评测数据 |
---|---|---|---|---|---|
1 | 正确 | 25.00 | 202ms | 23.36MB | 输入 输出 |
2 | 正确 | 25.00 | 202ms | 23.46MB | 输入 输出 |
3 | 正确 | 25.00 | 140ms | 23.42MB | 输入 输出 |
4 | 正确 | 25.00 | 124ms | 23.38MB | 输入 输出 |