python - 糖果分发问题 NPTEL。显示一个整数,表示使每个数据包大小相等所需的最小移动次数?
问题描述
* SRS 教授正在与他的课程的一组学生一起旅行。他拿了几包糖果分发给学生。不幸的是,小包的大小不一样,教授希望以公正的方式分发糖果。一个解决方案是打开所有的小包,将一些糖果从较大的小包移到较小的小包中,这样每个小包中的糖果数量相等。您的任务是确定此类移动的最小数量,以确保所有包具有相同数量的糖果。
(一个移动表示从一个包中挑选一个糖果并将其移动到另一个) 输入格式:输入的第一行包含以空格分隔的整数,指示每个包的大小。输出格式:显示一个整数,表示使每个数据包大小相等所需的最小移动次数。如果无法均衡,则显示 -1 作为输出。*
例子:
输入:
1 1 1 1 6 输出:
4 输入:
3 4 输出:
-1
解决方案
d=[int(i) for i in input().split()]
s=sum(d)
result=0
if s%len(d)==0:
for i in range(len(d)):
if d[i]<(s//len(d)):
result=result+((s//len(d))-d[i])
print(result,end='')
else:
print('-1',end='')
推荐阅读
- office-js - 适用于 Mac OS 和 Windows 的 Word 插件安装
- windows - 如何在 Google 电子表格上添加本地文件的链接?
- python - 创建无法登录的django用户
- sql-server - Select–String :术语“Select–String”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称
- python - 如何读取在 python 程序中创建的对象数量并保存为列表
- android - 使用 Kotlin 数据类的 Json 解析器正确返回 json 数据,但是为什么解析器(MockK)的单元测试会失败?
- java - 如何配置必须使用“密码”授权类型从授权服务器请求令牌的客户端 Java 应用程序?
- java - Java多线程:线程应访问列表
- java - 在 HTTP 标头可用时读取它们
- c# - 从路径加载文件和从流 C# 加载文件之间的区别