本文主要是介绍题目 1431: 蓝桥杯第五届真题-分糖果,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述:
有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:
每个小朋友都把自己的糖果分一半给左手边的孩子。
一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。
反复进行这个游戏,直到所有小朋友的糖果数都相同为止。
你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。
代码:
package lanqiao;import java.math.BigInteger;
import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[] ar1 = new int[n]; //原本糖果的数目int[] ar2 = new int[n]; //给左孩子的糖果数目for(int i = 0;i < n;i ++){ar1[i] = sc.nextInt();}boolean flag = true;int sum = 0;while(flag){flag = false;for(int i = 0;i < n;i ++){if(i == n - 1){ar2[0] = ar1[i] / 2;ar1[i] = ar1[i] / 2;}else{ar2[i + 1] = ar1[i] / 2;ar1[i] = ar1[i] / 2;}}for(int i = 0;i < n;i ++){ar1[i] += ar2[i]; //加上旁边给的糖果}for(int i = 0;i < n;i ++){if(ar1[i] % 2 != 0){ar1[i] += 1;sum ++;}if(ar1[0] != ar1[i]){ //判断孩子们手中糖果是否相等flag = true;}}}System.out.println(sum);}
}
这篇关于题目 1431: 蓝桥杯第五届真题-分糖果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!