计算使所有小朋友糖果数量相等的最少轮数

ab809124 程序题 共 个子题

有n个小朋友站成一排,起初从左到右每个小朋友分别有a₁,a₂,...,aₙ颗糖果。 每一轮老师都会选择一个或多个有糖果的小朋友,他们会将自己的1颗糖果送给相邻的小朋友(左边或右边)。 请计算最少需要经过多少轮,才能使所有小朋友的糖果数量都相等;如果做不到,则输出-1。

样例说明

例1: n=3,初始糖果为[1,0,5],最少需要3轮,过程如下:

  1. 第一轮:第3个小朋友给第2个1颗,糖果变为[1,1,4]
  2. 第二轮:第2个给第1个1颗、第3个给第2个1颗,糖果变为[2,1,3]
  3. 第三轮:第3个给第2个1颗,糖果变为[2,2,2]

例2: n=3,初始糖果为[0,2,0],总和为2无法被3整除,故输出-1。

输入描述

第一行输入一个整数n(1 ≤ n ≤ 10⁴),表示小朋友的人数。 第二行输入n个整数a₁,a₂,...,aₙ(0 ≤ aᵢ ≤ 10⁵),分别表示从左到右每个小朋友初始的糖果数量,整数之间以空格隔开。

输出描述

输出一个整数,表示最少需要的轮数;如果无法均分则输出-1。

样例输入

3
1 0 5

样例输出

3

本题为编程题,提交代码并运行通过测试点后判分。

正在加载题目数据…
已答 /
子题
该题型需在试卷/作业中作答,单题练习暂不支持
答案解析
提交记录
共 条 仅展示自由练习提交
正在加载提交记录…
讨论
发布
登录后参与讨论 立即登录
发布讨论需先绑定并验证手机号 去绑定手机号
加载中…
我
我
回复 @
回复 @
发送
还没有人讨论,来发表第一条吧