通过一个总分,动态分配条数的平均分(取整)

本文介绍了一种通过给定总分动态分配到多个题目的平均分(取整)算法。面对传统向下取整方法导致的分数偏差问题,文章提出了一种改进方案:先将所有分数向下取整,并利用总分模除题目数量的余数进行补偿,确保总分准确无误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过一个总分,动态分配条数的平均分(取整)

  1. 遇到了一个需求,就是通过给定一个类型定义总分:例如21分
  2. 然后分配给多个题目:例如4个
原本的思路:
  1. 前面的分数全部都向下取整,最后一个分数向上取整
  2. 例如:21分,分配4个
  3. 那么21/4 = 5.25分
  4. 也就是前面3个是5分
  5. 最后一个是6分
  6. 刚好是21分
就在我觉得这样写可以的时候,问题来了
  • 当出现分数30分,分配4个的时候就出现问题了
  1. 30/4 = 7.5分
  2. 也就是前面3个是7分
  3. 最后一个是8分
  4. 但是这样子的话就出现 7+7+7+8 = 29分少一分的情况
最后的解决
  1. 先用30/4 = 7.5分 来向下取整7分
  2. 用 总分 即30 来模需要取整的个数 即4个 即 30%4 = 2
  3. 最后循环来判段
for(int i = 0; i < 4; i++) {
	score = score + (i < 2 ? 1 : 0);
}
  1. 判断我们需要的个数是否小于模出来的数,如果小于就+0,大于就+1
  2. 这样的话就是出现 7+1,7+1,7+0,7+0
  3. 这样的话就是8+8+7+7 等于30

这样就解决了平均分取整的问题了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值