解析:
5个随机数的大小排列顺序对应24种情况,这是显而易见的,但这只是大小顺序提供的信息,而5个随机数本身的数值信息还没充分利用
总数52的算法只是选取了最小值或第二小值做为待猜数,这就限制了总数的数值,同时也说明待猜数的选择是提高总数的关键问题
总数124的算法涉及到三层数值赋值
原始的124个数从小到大用冠y值表示
y(0)=0,y(1)=1,y(2)=2,…,y(123)=123
对于小红来说
5个随机数从小到大为abcde
从小到大用冠x值表示
x(0)=a,x(1)=b,x(2)=c,x(3)=d,x(4)=e
计算(a+b+c+d+e)mod5=n
由此选取x(n)对应的数值做为待猜数
假设n=2,也就是将x(2)=c做为待猜数
对于小明来说,看到的只是abde
先计算(a+b+d+e)mod5=m
再计算(5-m)mod5=p
再将除去abde的120个数按从小到大排列用冠z数值表示
z(0),z(1),z(2),…,z(119)
那么一定有c=z(5k+p),k=0,1,2,…,23
当然k值完全可以用abde的排列顺序表示
用实例进行演示
比如观众随机选取的5个数是
a=2,b=13,c=14,d=60,e=100
小红进行如下分析计算
x(0)=2,x(1)=13,x(2)=14,x(3)=60,x(4)=100
n=(2+13+14+60+100)mod5=4
x(4)=e=100,取e=100做为待猜数
即前4张是2,13,14,60的某种排列
小明进行如下分析计算
m=(2+13+14+60)mod5=4
p=(5-4)mod5=1
除去2,13,14,60得到冠z数列
z(0)=0,z(1)=1,z(2)=3,…,z(11)=12,z(12)=15,…,z(56)=59,z(57)=61,…,z(95)=99,z(96)=100,z(97)=101,…,z(119)=123
显然100=z(96)=z(5*19+1)
是在冠z数列中属于mod5=1的第20个数
小红将2,13,14,60的排列顺序可设为
dacb,即60,2,14,13
小明就可以翻译出是20,对应k=19