【2014省赛试题】分糖果

网友投稿 670 2022-10-20

【2014省赛试题】分糖果

【2014省赛试题】分糖果

标题:分糖果

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

【格式要求】

程序首先读入一个整数 N (2

public class Text08_分糖果 { public static void main(String[] args) { Scanner input = new Scanner(System.in); int n = input.nextInt(); // 小朋友的人数 if ( n<2 || n>100 ) { return; } int[] arr = new int[n]; // 记录每个小朋友的糖果数 int sweets; for (int i = 0; i < arr.length; i++) { arr[i] = input.nextInt(); if ( (arr[i]) < 2 || (arr[i]>1000) || (arr[i]%2==1) ) return; // 糖果数为偶数 } int sum = 0; while (true){ // 分糖果 --- 闭合的环 for (int i = 1; i < arr.length-1; i++) { arr[i+1] = arr[i+1]/2; // 右边小朋友分出的一半糖果 arr[i] += arr[i+1]/2; // 左边小朋友获取分得的糖果 arr[i] = arr[i] / 2; arr[i-1] += arr[i]; arr[i-1] = arr[i-1]/2; arr[i+1] += arr[i-1]; } // 老师补发糖果 for (int a:arr) { if (a%2!=0){ a +=1; sum++; } } // 判断所有的小朋友糖果数是否相等 if (check(arr)){ System.out.println(sum); break; } } } // 判断每个小朋友的糖果数是否相等 public static boolean check(int[] arr){ int m = arr[0]; for (int i = 1; i < arr.length; i++) { if (arr[i]!= m) return false; } return true; }}

​​注意:这里是小朋友围坐成一圈,所以是个闭合的环!!!​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Echarts --- 可视化练习(bar01)
下一篇:beyod- PHP Socket 网络应用框架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~