Java蓝桥杯历届试题 分糖果

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-22 22:17   11   0
问题描述
  有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:

  每个小朋友都把自己的糖果分一半给左手边的孩子。

  一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。

  反复进行这个游戏,直到所有小朋友的糖果数都相同为止。

  你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。
输入格式
  程序首先读入一个整数N(2<N<100),表示小朋友的人数。
  接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2)
输出格式
  要求程序输出一个整数,表示老师需要补发的糖果数。
样例输入
3
2 2 4
样例输出
4

分析:本题是一个模拟问题,需要创建一个


数组来存放每一个小朋友的糖果。主要就是


在While循环里面来进行糖果的分配。

/**
 * 
 */
package 历届试题;

import java.util.Scanner;

/**
 * @author Administrator
 *
 */
public class 历届试题分糖果 {

 /**
  * @param args
  * 有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:

  每个小朋友都把自己的糖果分一半给左手边的孩子。

  一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。

  反复进行这个游戏,直到所有小朋友的糖果数都相同为止。

  你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。
输入格式
  程序首先读入一个整数N(2<N<100),表示小朋友的人数。
  接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2)
输出格式
  要求程序输出一个整数,表示老师需要补发的糖果数。
样例输入
3
2 2 4
样例输出
4
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  int min = 10000;
  int max = 0;
  Scanner sc=new Scanner(System.in);
  int N=sc.nextInt();
  int[] M=new int[N];
  for (int i = 0; i < M.length; i++) {
   M[i]=sc.nextInt();
   
  }
  int[] temp = new int[N];//第I个小孩的一半糖果
  int count = 0;
//  for (int i = 0; i < M.length; i++) {
//   System.out.println(M[i]);
//  }
  
  while(min != max){
   //求最大值和最小值并计算每个人糖果的一半
   for (int i = 0; i < N; i++) {
    temp[i]=M[i]/2;
    if (M[i]>max) {
     max=M[i];
    }
    if (M[i]<min) {
     min=M[i];
    }
   }
   if (min==max) {
    break;
   }else {
    max=0;
    min=10000;
   }
   for (int i = 0; i < N; i++) {
    M[i]=temp[i]+temp[(i+1)%N];
    if (M[i]%2!=0) {
     M[i]++;
     count++;
    }
   }
  }
  System.out.println(count);
  
  
 }

 }

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP