源 | Xpecya@知乎

大家好我是卖萌酱。昨天在知乎上刷到一个很有意思的问题:“五个同事决定计算他们的平均工资,在大家互相不告诉薪水的情况下,如何才能做到这一点?”。

确实互联网公司是不让员工讨论薪资的,但通过一些神操作却可以在不触碰公司安全红线的情况下算出平均值,还是非常有意思的(请勿实操,后果自负)

假设五个同事分别为ABCDE,他们的工资分别为abcde

则A随便像一个数a1,他把a1告诉B

B也随便想一个数b1,把a1+b1的结果告诉C

C也随便想一个数c1,把a1+b1+c1的结果告诉D

D也随便想一个数d1,把a1+b1+c1+d1的结果告诉E

E也随便想一个数e1,带上自己的工资e,把a1+b1+c1+d1+e1+e的结果告诉D

D把自己的工资d加上去,把自己之前加上去的d1去掉,把a1+b1+c1+d+e1+e的结果告诉C

C把自己的工资c加上去,把自己之前加上去的c1去掉,把a1+b1+c+d+e1+e的结果告诉B

B把自己的工资b加上去,把自己之前加上去的b1去掉,把a1+b+c+d+e1+e的结果告诉A

A把自己的工资a加上去,把自己之前加上去的a1去掉,把a+b+c+d+e1+e的结果告诉E

E把自己的e1减掉,除以5,得到最终平均数。

这个做法的好处在于:

  1. 显然,全程中每个人都没有机会知道任何一个人的具体工资到底是多少。

  2. 哪怕数据传输过程中被他人截获,也没有机会用自己手中的随机数和工资反推其他人的工资(而其他答案中,比如第一个人随便想一个数,然后加上自己的工资传给第二个人,然后每个人加上自己的工资往下传,那么极端情况下,第一个人是有机会截获其他所有人传递的中间数据,根据自己手中的起始数退出所有其他人的工资。)这个算法唯一的破绽在于,只有所有人一起联手,交出自己手中的随机数,才能把所有人的工资推出来。

  3. 这个算法对任意大于等于2人的方式都成立。扩展性很好。

  4. 数据传输次数为2n-1(n表示人数),已经足够简略了。再少就不能保证安全了。

牛哇,没想到密码学还可以用到这里。卖萌酱最后再提醒一下请勿实操,毕竟其中很大一个风险是——最后发现自己的工资比平均工资还低,那就......

后台回复关键词【入群

加入卖萌屋NLP、CV与搜推广与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

五个同事想计算他们的平均工资,但公司不让吐露薪资,如何实现?相关推荐

  1. python平均工资-2019年我国程序员薪资统计,看看你出于什么水平?

    主要城市程序员工资 2019年9月北京招收程序员26430人.2019年9月北京程序员平均工资17224元,工资中位数15000元,其中95%的人的工资介于3750元到45000元. 2019年9月上 ...

  2. 查询哪个部门的平均工资比公司的平均工资高

    select department_id, round(avg(salary),2) avg_sal from employees group by department_id having avg( ...

  3. 【LeetCode-SQL】615. 平均工资:部门与公司比较

    一.题目 给如下两个表,写一个查询语句,求出在每一个工资发放日,每个部门的平均工资与公司的平均工资的比较结果 (高 / 低 / 相同). 表: salary | id | employee_id | ...

  4. LeetCode MySQL 615. 平均工资:部门与公司比较(over窗口函数)

    文章目录 1. 题目 2. 解题 1. 题目 给如下两个表,写一个查询语句,求出在每一个工资发放日,每个部门的平均工资与公司的平均工资的比较结果 (高 / 低 / 相同). 表: salary | i ...

  5. 五十道编程小题目 --- 50 有五个学生,每个学生有3门课的成绩,计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件stud中java

    [程序50]  题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件"stud" ...

  6. 有五个学生,每个学生有3门课程的成绩,从键盘输入学生数据(包括学号、姓名、3门课程成绩),计算出平均成绩,将原有的数据和计算出的平均分数存放在磁盘文件stud中。

    有五个学生,每个学生有3门课程的成绩,从键盘输入学生数据(包括学号.姓名.3门课程成绩),计算出平均成绩,将原有的数据和计算出的平均分数存放在磁盘文件stud中. #include <stdio ...

  7. > 编写程序,计算汽车的平均油耗。假设一个司机想计算他的汽车每百千米的平均油耗, 这个司机在第一次加油时,观察车子已经行驶的总里程为23 > 352千米,该司机加满油箱以后, 在第二次加油时,观察车子

    编写程序,计算汽车的平均油耗.假设一个司机想计算他的汽车每百千米的平均油耗, 这个司机在第一次加油时,观察车子已经行驶的总里程为23 352千米,该司机加满油箱以后, 在第二次加油时,观察车子行驶的总 ...

  8. 厦门java工资水平2018_8290元!厦门最新平均工资出炉!看完想跳槽......

    原标题:8290元!厦门最新平均工资出炉!看完想跳槽...... 一周又过去了,7月又要结束了 年初制定的目标实现的怎么样了? 你脱单了没? 你脱脂了没? 你脱贫了没? 再告诉你们一个心塞的消息 &l ...

  9. Python 数据分析三剑客之 Pandas(五):统计计算与统计描述

    CSDN 课程推荐:<迈向数据科学家:带你玩转Python数据分析>,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python ...

最新文章

  1. 仅需6步,教你轻易撕掉app开发框架的神秘面纱(1):确定框架方案
  2. 实现DataGridView和DevExpress.GridControl表头全选功能
  3. 自己动手,实现一款轻量级 HTTP 调用工具
  4. 用哈希桶实现错位字组的分类(Group Anagrams)
  5. 模块概念与使用及注意事项
  6. 北海计算机职称考试地点,【2017年广西北海职称计算机考试报名时间9月1日-5日】- 环球网校...
  7. 电脑开机提示EFI Netword 0 for ipv4 boot failed的原因及解决方法
  8. Python中的操作符重载
  9. liferay 6.2 主题开发
  10. java p39课后答案_面向对象程序设计(JAVA)答案
  11. 计算机主板上电源供电缩写,新电脑电源标准开始普及?取消5V、3.3V供电,主板供电变为10PIN...
  12. 【mysql数据类型】uint和int的区别
  13. CRM系统源码PHP开发
  14. PowerBI数据分析之Power BI Desktop数据整理
  15. 迪米特法则 php,迪米特法则(The Law of Demeter) -解道Jdon
  16. 蓝牙及蓝牙耳机工作原理
  17. 如何检测计算机性能 具体步骤,如何测试电脑性能
  18. 匿怨而友其人,左丘明耻之,丘亦耻之。我不是圣人,我假装什么都没发生。
  19. ebox学习之SD fat 配置
  20. java URL java.net.URL类的使用 详细介绍 URL转义 解决URL中文字符

热门文章

  1. 关于MapReduce中自定义Combine类(一)
  2. Android启示录——开始Android旅途
  3. js在类的方法中访问自己的属性
  4. make 命令_make考点总结(建议中、高考学生收藏)
  5. 【Pytorch神经网络实战案例】27 MaskR-CNN内置模型实现语义分割
  6. 【Pytorch神经网络基础理论篇】 04 线性代数
  7. LeetCode 1626. 无矛盾的最佳球队(最大上升子序DP)
  8. LeetCode 642. 设计搜索自动补全系统(Trie树)
  9. LeetCode MySQL 1113. 报告的记录
  10. 程序员面试金典 - 面试题 16.21. 交换和(哈希set)