题目描述: 一家公司三个员工,求三个员工平均工资,每个人薪资不一样(要求:每个人要保证其他人不能知道自
己的工资),请你设计一个解决方案?
想了半天没想出来,面试官还提示员工之间消息可以单播和多播传递。
设A,B,C三个人工资分别为a,b,c
解决方案:
- 员工A将其工资加上一个随机数x将其告知B,则B得到的数据为a+x;
- 员工B将其工资加上一个随机数y并加上从A收到的数据发送给C,则C得到数据为a+x+b+y;
- 员工C将其工资加上一个随机数z并加上从B收到的数据发送给A,则A得到的数据为a+x+b+y+c+z;
- 员工A将从C得到的数据减x发送给B,则B得到的数据为a+b+y+c+z;
- 员工B将从A得到的数据减y发送给C,则C得到的数据为a+b+c+z;
- 员工C将从B得到的数据减z,则得到数据为a+b+c;
- 将其(a+b+c)/3得到平均工资。
这样就每个人都不知道其他人工资的情况下,计算出平均工资。有点像数字加密方面,这题实际不难,像个脑筋急转弯,但是没有思路还是有点难想到。