package com.smh.year2014; import java.util.Scanner; /** * @version 1.0 * @auther 孙沐华 * 分糖果 */ public class test08 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int N = scanner.nextInt(); //表示小朋友的人数 scanner.nextLine();//nextLine 去掉整数后面的换行符 如果没有这一行下次扫描 // 的时候会带上前面的换行符 split方法会失效 int[] arr = new int[N]; String s = scanner.nextLine(); String[] split = s.split(" "); for (int i=0;i< split.length;i++) { arr[i]=Integer.parseInt(split[i]); } f(N,arr); System.out.println(arr[1]); } public static void f(int N,int[] arr ){ boolean loop; loop=check(arr); while (loop){ int[] temp=new int[N]; for (int i = 0; i <N ; i++) { if (arr[i]%2==1){ arr[i]+=1; } arr[i]=arr[i]/2; } for (int i = 0; i <N ; i++) { temp[i]=arr[i]; } for (int i = 0; i < N-1; i++) { arr[i]=arr[i]+temp[i+1]; } arr[N-1]=arr[N-1]+temp[0]; loop=check(arr); } } public static boolean check(int[] arr){ int temp=arr[0]; for (int i = 1; i < arr.length ; i++) { if (arr[i]!=temp){ return true; } } return false; } }
有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:
每个小朋友都把自己的糖果分一半给左手边的孩子。
一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。
反复进行这个游戏,直到所有小朋友的糖果数都相同为止。
你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。
【格式要求】
程序首先读入一个整数N(2<N<100),表示小朋友的人数。
接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2)
要求程序输出一个整数,表示老师需要补发的糖果数。
例如:输入
3
2 2 4
程序应该输出:
4
思路分析: 我们首先要把糖果分成两份 然后将其中的一份分给自己的右手边的人 我们可以将其中一份让temp数组保存 另一部分让自己保存 然后跟去题意的逻辑去操作
标签:arr,scanner,int,split,小朋友,糖果 From: https://www.cnblogs.com/xingxingbclg/p/17062695.html