查看: 1846|回复: 51

[逻辑推理] Key数之谜

转载  已解决  简洁模式
发表于 2019-7-26 13:55:20 | 发自安卓客户端
题目:
有M,N两人需要进入到两个独立的房间中,系统在1-1001之间(含1和1001)随机抽取三个数字a,b,c,设定数a为Key数并告诉M,然后由M挑选一个数,之后由N挑选一个数
条件:
1:M,N两人都已知这三个数字是多少
2:数字均为整数
3:M一定不会挑选key数
4:三个数都只能被挑选一次,即M挑选过的数字,N不能再次挑选
5:M,N两人只能在开始之前(随机抽取数字之前)进行约定
6:两个房间完全独立,不存在任何其他条件使N,M可以交流
7:两人均具有强大的运算能力,不存在人类脑力限制
问题:
是否存在一种算法F,在M从b,c两个数字中挑选一个之后,N必定能够根据算法F得知哪一个数是key数,从而挑选a。
登录帐号可查看完整回帖内容

此回答在 2019-7-30 11:12 被选定为谜题答案,获得破案经验 2

发表于 2019-7-26 22:56:19 | 2019-7-27 09:47编辑 | 发自安卓客户端
房主应该是学的计算机算法吧?我想了一个算法,跟数的性质完全无关,不过应该也能做出来。
约定1,当nm知道3个数后,对三个数进行从大到小排序,设为x>y>z。约定2,附加一个特别条件x>y>z>x,使得abc三个数形成一个有方向的循环排序。
约定3,key数为排序方向中m所选数的下一个数。
根据以上f算法为:
a=random
b=random
c=random
desc[3]=sort(a,b,c)
k=M所选数
if k==desc[0] then output(key数为desc[1])
else if k==desc[1] then output(key数为desc[2])
else if k==desc[2] then output(key数为desc[0])
登录帐号可查看完整回帖内容
1人评分
英镑 +1
楼主| 发表于 2019-7-26 14:00:43 | 发自安卓客户端
有想法的同志可以回帖,第一个答对者有奖
登录帐号可查看完整回帖内容
发表于 2019-7-26 16:54:31 | 发自安卓客户端
条件5的约定是什么意思?
登录帐号可查看完整回帖内容
发表于 2019-7-26 18:02:13 | 2019-7-26 18:13编辑
三个数按从小到大排,M选key左边的数,左边没数就选最后
登录帐号可查看完整回帖内容
楼主| 发表于 2019-7-26 20:05:30 | 发自安卓客户端
本题有一定难度,要读懂细节
登录帐号可查看完整回帖内容
发表于 2019-7-26 20:39:56
几个问题:abc是否存在重复情况?N是否知道M选的数字,若不知道选中相同后怎么处理
登录帐号可查看完整回帖内容
发表于 2019-7-26 20:49:52 | 发自安卓客户端
a>b>c
a>c>b
b>a>c
b>c>a
c>a>b
c>b>a
仅大于给出三位数字的关系如上,因为M知道key为a,在这里就假设a为key.若M选择仅小于a的,则可用1235关系式,46关系式a为最小值应选择仅大于a的数成立(key取adc任意一个都可用,不影响结果,我只是以a为key验证)
登录帐号可查看完整回帖内容
1人评分
英镑 +1
发表于 2019-7-26 22:52:12 | 发自安卓客户端
N知道M选的数对吧
登录帐号可查看完整回帖内容
1人评分
英镑 +1
发表于 2019-7-26 23:04:23
首先最好不要混用“数”和“数字”。
其次我想了一会儿,用大小关系好像可行啊,如果a b c中没有重复的话。lz想到的超复杂的方法是不是要改动一下题设才能变成最简单的方法?
登录帐号可查看完整回帖内容
返回版块
12
尚未登录
您需要登录后才可以回帖 登录 | 加入学院