点击查看:蓝桥杯历年真题 题解目录
分糖果
思路分析:
1. 循环判断是否达到全部相等的状态
2. 记录原有的糖果总数
3. 对数组每一项进行 除以2,为每位小朋友分出自己糖果一般后尚未得到糖果的数量
4. 辅助变量记录a[0] , 对a[0]~a[n-2] 执行 a[i]+=a[i+1] 操作,a[n-1]+=t;
得到每一位小朋友收到的糖果数+自己剩余的糖果数
5. 对每一个为奇数糖果的小朋友 ++操作。
6. 最后,达到平衡时,记录现有的糖果总数,sum2-sum1为老师发的糖果数
package java_2014_B;
import java.util.Scanner;
public class Main008_分糖果 {
static int sum1,sum2;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[]a = new int[n];
for(int i=0;i<n;i++) {
a[i]=in.nextInt();
sum1+=a[i];
}
while(!Allequals(a)) {
for(int i=0;i<n;i++)
a[i]=a[i]/2;
int a0 = a[0];
for(int i=0;i<n-1;i++)
a[i]+=a[i+1];
a[n-1]+=a0;
for(int i=0;i<n;i++)
if(a[i]%2==1) a[i]++;
}
for(int i=0;i<n;i++) sum2+=a[i];
System.out.println(sum2-sum1);
}
public static boolean Allequals(int[]a) {
for(int i=0;i<a.length;i++) {
if(a[i]!=a[0]) {
return false;
}
}
return true;
}
}
来源:CSDN
作者:Xiong-er
链接:https://blog.csdn.net/weixin_44107920/article/details/104598708