背景

隔壁王老师遇到了一个问题,学校给了10元钱,需要平均分给张三,李四和王五3人。王老师犯难了。

方案1

张三说,那好办,10 / 3 = 3.33333… 王老师每个人给3.34元那不就好了吗?王老师说,不行呀! 3.34*3 = 10.02 我不是亏了。要不我每个人给3.33元可不可以。 张三坚决不同意,反手举报王老师贪污他们的0.01元。

方案2

聪明的李四说了,要不这样,你先随机打算顺序,前2位给 3.33 元,最后一位给 10 - 3.33 * 2 = 3.34 元。这样就不存在谁亏了的说法。

实现
function equallyMoney($money, $weightMap) : array
{// 这边为了让结果比较公平 应该需要加一步随机 具体按照业务逻辑修改$totalWeight = array_sum($weightMap);  // 这里的权重为整数 如果有小数。需要用高精度加法$res = [];foreach ($weightMap as $key => $weight) {$res[$key] = bcdiv(bcmul($money, $weight, 2), $totalWeight, 2);$money = bcsub($money, $res[$key], 2);$totalWeight = bcsub($totalWeight, $weight, 4);}return $res;
}
运行结果
echo json_encode(equallyMoney(10, ['张三' => 1, '李四' => 1, '王五' => 1]), JSON_UNESCAPED_UNICODE);{"张三":"3.33","李四":"3.33","王五":"3.34"} // 共10

王五运气比较好,而且大家相差不大,于是大家散了。

方案3

第二天学校又给了王老师20元钱,要发给张三,李四,王五,赵六,孙七和周八,王老师又拿出原来的算法

运行结果
echo json_encode(equallyMoney(20, ['张三' => 3, '李四' => 3, '王五' => 3, '赵六' => 3, '孙七' => 3, '周八' => 3]), JSON_UNESCAPED_UNICODE);{"张三":"3.33","李四":"3.33","王五":"3.33","赵六":"3.33","孙七":"3.33","周八":"3.35"} // 共20

王五不同意了,为啥我们都是3.33 周八却有 3.35他算什么√8 我不同意。王老师听了三天睡不着觉,于是又了以下算法。

实现
// 这边具体实现中加了权重字段
public static function equallyMoney($money, $weightMap) : array
{// 这边为了让结果比较公平 应该需要加一步随机 具体按照业务逻辑修改$totalWeight = array_sum($weightMap);  // 这里的权重为整数 如果有小数。需要用高精度加法$res = [];foreach ($weightMap as $key => $weight) {$res[$key] = bcdiv(bcmul($money, $weight, 2), $totalWeight, 2);$money = bcsub($money, $res[$key], 2);$totalWeight = bcsub($totalWeight, $weight, 4);}return $res;
}
运行结果
echo json_encode(equallyMoney(20, ['张三' => 3, '李四' => 3, '王五' => 3, '赵六' => 3, '孙七' => 3, '周八' => 3]), JSON_UNESCAPED_UNICODE);{"张三":"3.33","李四":"3.33","王五":"3.33","赵六":"3.33","孙七":"3.34","周八":"3.34"}  // 共20

最后大家拿到钱,看看人别,感觉不是大亏。于是就散了。

王老师终于能睡个好觉了,他发誓,再也不帮学校分钱了。

10块钱怎么较为平均分给三个人相关推荐

  1. 一个人花8块钱买了只鸡,9块钱卖了,又10块钱买回来,11块钱又卖了,他赚了多少钱

    一个人花8块钱买了只鸡,9块钱卖了,又10块钱买回来,11块钱又卖了,他赚了多少钱? 这是IBM面试时的题目,有四种算法: 1.9-8=1,11-10=1,1+1=2,所以最后赚2元. 2.最初只有8 ...

  2. 2块一瓶,2空瓶换一瓶,4瓶盖换一瓶,10块钱喝几瓶?

    最近看到一个面试题,觉得类似于脑筋急转弯,手里有10块钱,让去买啤酒, 2块钱一瓶,老板有又说:2个空瓶可以换一瓶啤酒,4个瓶盖可以换一瓶啤酒,这样我们到底可以弄到多少瓶啤酒. 第一次我们可以买:5瓶 ...

  3. 卖肾换来一部iPhone后生活不能自理,那手机电商平台现在卖10块钱!

    本文来自公众号"电商报",TechWeb经授权发布 ID | kandianshang 作者 | 电商君 九年前, 有人卖掉一个肾换来一部iPhone 4! 上帝欲让人灭亡,必先让 ...

  4. 你可能小赚,但苹果永远不亏!华强北老板说一台新iPhone只赚10块钱?

    昨天新iPhone正式开售,库克一定又笑开了花.光是预售,iPhone 11系列就拿下了不俗的成绩. 从现如今的结果来看,iPhone 11系列依然保持了真香传统,前一天还在说背后摄像头丑,创新不够, ...

  5. 一个人花8块钱买了一只鸡,9块钱卖掉了,然后他觉得不划算,花10块钱又买回来了,11块卖给另外一个人。问他赚了多少?

    一个人花8块钱买了一只鸡,9块钱卖掉了,然后他觉得不划算,花10块钱又买回来了,11块卖给另外一个人.问他赚了多少? 思路: 一个人花8块钱买了一只鸡,9块钱卖掉了 -----赚一元 花10块钱又买回 ...

  6. Java 10块钱 换 1元和0.5元

    public class Test17 {//10块钱 换 1 元 和 0.5public static void main(String[] args) {//1.定义循环一共十种结果for (in ...

  7. 酒瓶与瓶盖换酒问题 - 10块钱可以喝多少瓶酒

    前些日子有QQ好友发给我下面这个问题: 啤酒2块钱1瓶,4个盖换一瓶,2个空瓶换一瓶,问10块钱可以喝多少瓶. 当时没有时间算这个问题(其实就是懒得动笔和动脑子),但这几天又老想着这个问题,所以今天决 ...

  8. python 瓶盖换酒问题(啤酒2块钱一瓶,2个酒瓶可以换一瓶酒,4个瓶盖可以换一瓶酒 问10块钱可以喝几瓶酒)

    问题:2元一瓶酒,2个空瓶换一瓶,4个瓶盖换一瓶 问10块钱买几瓶酒?? 最终喝到酒的数量 class Change:def __init__(self,money):self.money=money ...

  9. 打车起步价13(3公里内),之后每多一公里增加 5块钱. 用户输入公里数就可以计算打车价格,如果有拥堵情况,总价格多收取10块钱拥堵费。(3种方法解答:1.普通函数 2.闭包 3.闭包写法升级)

    <!DOCTYPE html> <html><head><meta charset="UTF-8"><title>< ...

最新文章

  1. nacos mysql8.0修改
  2. https://enhancer.io
  3. 阅读源码学设计模式-单例模式
  4. android drawLayout抽屉布局
  5. Diango 框架起步
  6. 【转载】美国煤层气发展史
  7. 【转】Request.Form.Get() Request.Form Request[]区别
  8. 调用webservice,解析返回数据为xml格式的字符串,进行数据绑定
  9. DOS MASM 安装
  10. 读文万卷025期:使用MRI形态学特征和表观弥散系数预测WHO II/III级胶质瘤分子状态;帕金森病的中脑的定量磁敏感成像
  11. pta:人民币与美元汇率兑换程序(python)
  12. 批量提取文件创建时间_文件列表提取软件的使用
  13. 项目选题-口罩识别检测系统
  14. spark日志中 Tid是什么
  15. 第四十二篇:Flink面试方案设计篇
  16. JAVA性能优化,让程序更快更稳定
  17. 经典案例oracle和mysql分别比较
  18. 重构 - 提炼函数,消除重复代码
  19. java导出html word文档_java生成带html样式的word文件
  20. vue中使用天地图测距、测面、标点【一】

热门文章

  1. 被迫离职后,我举报公司偷税漏税。现在求我和解
  2. Java及spring 注解(反射原理)
  3. Java调用Geode
  4. 近期的生活及过去一年的工作总结
  5. 第71课:Spark SQL窗口函数解密与实战学习笔记
  6. 程序员想在深圳扎根,除了去腾讯,还可以考虑一下这些公司
  7. JAVA基础知识----三大流程控制结构
  8. 程序员哇,你想在下个情人节或者520脱单么?这个秘籍不能错过
  9. 演示URL编码与解码
  10. Springboot2 D1-基础篇、利用boot完成SSM整合(内含Mp的一些知识)