行政办公室,时常会收到一些福利性的物品,如:好几箱的水果、花生、台历等等。这时候,办公室人员通常要负责将这些福利按一定的比例分发到各个部门和领导手中。这其实也是件蛮费脑子的事情。这其中是有潜规则的——物品数量的分配比例是:
1,老板>领导>员工;
2,同级人员分配的数量相同;
3,至少每人一份;
4,如果不够每人一份,就不分,转作它用(如放在接待物品中)。
虽然这体现出不公平,但社会现实就是这样的。
我们姑且不去讨论这到底公不公平,我们只从纯技术的角度来分析解决这个问题。
如下Python代码,用以解决如上物品分配问题。其分配原则是:
1,如果物品数量足够,则按如下比例分配:
老板:领导:员工=20%:18%:62%
2,同级人员分配的数量相同;
3,分配的底线是:至少每人一份;
4,如果不够每人一份,就不。
您也可以自行修改代码中的比例,以符合您的需求。
如下是代码:
def allocate_items(item_count, boss_count, leader_count, employee_count):
total_people = boss_count + leader_count + employee_count
# 如果物品数小于总人数或者某一类人数为0,则不够分配
if item_count < total_people or boss_count == 0 or leader_count == 0 or employee_count == 0:
print("不够分配")
return
# 如果物品数量等于总人数,确保每人分配至少1个物品
if item_count == total_people:
boss_per_person = 1
leader_per_person = 1
employee_per_person = 1
else:
# 方案1:老板:领导:员工=20%:18%:62%
boss_share = max(1, round(item_count * 0.2))
leader_share = max(1, round(item_count * 0.18))
employee_share = max(1, item_count - boss_share - leader_share)
# 显示每位老板、领导、员工分配的数量
boss_per_person = max(1, boss_share // boss_count)
leader_per_person = max(1, leader_share // leader_count)
employee_per_person = max(1, employee_share // employee_count)
# 计算剩余物品数,确保不为负数
remaining_items = max(0, item_count - (boss_per_person * boss_count + leader_per_person * leader_count + employee_per_person * employee_count))
print(f"每位老板分配: {boss_per_person} 个,每位领导分配: {leader_per_person} 个,每位员工分配: {employee_per_person} 个")
print(f"剩余物品数: {remaining_items} 个")
# 用户输入
item_count = int(input("请输入物品数量: "))
boss_count = int(input("请输入老板的数量: "))
leader_count = int(input("请输入领导的数量: "))
employee_count = int(input("请输入员工的数量: "))
# 调用函数
allocate_items(item_count, boss_count, leader_count, employee_count)