您的位置:首页 > 编程语言 > Java开发

蓝桥杯历届试题 分糖果

2016-05-23 14:57 525 查看
import java.util.Scanner;
public class Main {

public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int childnum=0;
childnum=scanner.nextInt();
int arrays[]=new int [childnum];    //存入小孩当前拥有的糖果
int assist[]=new int [childnum];	//存入小孩即将分走的糖果
int ori_sum=0;						//原始糖数
for (int i = 0; i < arrays.length; i++) {
arrays[i]=scanner.nextInt();
ori_sum+=arrays[i];
assist[i]=arrays[i]/2;
}
while (true) {
for (int i = 0; i < assist.length-1; i++) {//左手的小孩接受糖,同时自己的糖扣除
arrays[i]/=2;
arrays[i]+=assist[i+1];
}
arrays[arrays.length-1]/=2;             //处于末端的小孩接受头端的小孩糖
arrays[arrays.length-1]+=assist[0];
for (int i = 0; i < assist.length; i++) {//计算下一次要分出去的糖(本身还没有少)
if(arrays[i]%2!=0) arrays[i]+=1;
assist[i]=arrays[i]/2;
}
if(checksame(arrays)) break;			//判断糖是否都相等
}
System.out.println((arrays[0]*arrays.length)-ori_sum);//现在小孩手中的总糖数减去原始糖数
}
public static boolean checksame(int a[]) {
for (int i : a) {
if(i!=a[0]) return false;
}
return true;
}
}
直接模拟步骤求答案
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 蓝桥杯 分糖果