家政服务如何提升家庭生活质量与幸福感
670
2022-10-20
【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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~