蓝桥杯历届试题----分糖果(模拟)
生活随笔
收集整理的這篇文章主要介紹了
蓝桥杯历届试题----分糖果(模拟)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
問(wèn)題描述
有n個(gè)小朋友圍坐成一圈。老師給每個(gè)小朋友隨機(jī)發(fā)偶數(shù)個(gè)糖果,然后進(jìn)行下面的游戲:
每個(gè)小朋友都把自己的糖果分一半給左手邊的孩子。
一輪分糖后,擁有奇數(shù)顆糖的孩子由老師補(bǔ)給1個(gè)糖果,從而變成偶數(shù)。
反復(fù)進(jìn)行這個(gè)游戲,直到所有小朋友的糖果數(shù)都相同為止。
你的任務(wù)是預(yù)測(cè)在已知的初始糖果情形下,老師一共需要補(bǔ)發(fā)多少個(gè)糖果。
輸入格式
程序首先讀入一個(gè)整數(shù)N (2< N <100),表示小朋友的人數(shù)。
接著是一行用空格分開(kāi)的N個(gè)偶數(shù)(每個(gè)偶數(shù)不大于1000,不小于2)
輸出格式
要求程序輸出一個(gè)整數(shù),表示老師需要補(bǔ)發(fā)的糖果數(shù)。
樣例輸入
3
2 2 4
樣例輸出
4
解析:簡(jiǎn)單模擬即可,一開(kāi)始沒(méi)注意到最后一個(gè)不能直接同a[0]進(jìn)行處理,因?yàn)榍懊娴囊苿?dòng)已經(jīng)改變了a[0]的初始值,所以要多一步處理。
public class Main {static int n;static int[] a;static int cnt = 0;public static void main(String[] args) {Scanner in = new Scanner(System.in);n = in.nextInt();a = new int[n + 1];for (int i = 0; i < n; i++) {a[i] = in.nextInt();}while (true) {int j = 0;for (j = 1; j < n; j++) {if (a[0] != a[j]) {break;}}if (j == n) {break;}int x = a[0];for (int i = 0; i < n-1; i++) {a[i] = (a[i] + a[i+1]) / 2;}a[n-1] = (a[n-1] + x) / 2;for (int i = 0; i < n; i++) {if (a[i] % 2 != 0) {a[i] += 1;cnt++;}}}System.out.println(cnt);} }總結(jié)
以上是生活随笔為你收集整理的蓝桥杯历届试题----分糖果(模拟)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 静态方法工厂模式
- 下一篇: 蓝桥杯历届试题----斐波那契(矩阵快速