蓝桥杯第五届真题:分糖果

99封情书 提交于 2020-03-01 23:51:44

点击查看:蓝桥杯历年真题 题解目录

分糖果

在这里插入图片描述

思路分析:
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;
   }
}

在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!