参考代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();//n个小朋友
int[] candy=new int[n];//记录本轮分完后的结果
int[] temp=new int[n];//记录上一轮分完后的结果
for(int i=0;i<n;i++) {
candy[i]=in.nextInt();
temp[i]=candy[i];
}
int result=0;//记录老师需要补发的糖果数
while(!check(temp)) {//反复进行这个游戏,直到所有小朋友的糖果数都相同为止
for(int i=0;i<n;i++) {//分出自己的一半给左边
candy[i]-=temp[i]/2;
}
for(int i=0;i<n;i++) {//接收右边的一半给自己
candy[(i+1)%n]+=temp[i]/2;
}
for(int i=0;i<n;i++) {//拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数
if(candy[i]%2!=0) {
result++;
candy[i]++;
}
}
for(int i=0;i<n;i++) {//本轮结束后结果就变为上一轮的结果了
temp[i]=candy[i];
}
}
System.out.println(result);
}
private static boolean check(int[] a) {//检查所有小朋友的糖果数是否都相同
boolean flag=true;
for(int i=1;i<a.length;i++) {
if(a[0]!=a[i]) {
flag=false;
}
}
return flag;
}
}
参考链接:https://blog.youkuaiyun.com/jiayizhenzhenyijia/article/details/80529865?utm_source=blogxgwz1
还有另外一种解题思路,java语言实现,想了解的可以参考链接:https://blog.youkuaiyun.com/allyyhh/article/details/88600818