转跳到内容

数学算法挑战 [构造] 斯芬克斯之谜


只显示该作者

只有该作者的内容显示中。 返回到主题

推荐贴

1 0 0 =x
0 1 0 =y
0 0 1 =z

然后 根据斯芬给出的x,y,z的位数设定下次提问的k1 k2 k3的值
例如说x=21 y=555 z=9998

那么第四次提问时的k1 k2 k3的值就设定为 1 , 1000,10000000。
理想中的结果就会是 99980555021

因为通过位数将前三次提问得到的参数分离开了,所以第五次提问针对出现问题的那个值重复一次就好了w

链接到点评
18 小时前,Nemakori说道:

emmmm 因为原题目是来源于算法竞赛中的一道题,有数据范围限制QwQ,所以我可能需要一段时间去消化佬的做法,不过这个思路真的很有意思

不过我有个提问 假如第四次的回答是99980555021 + 10000000000的话 该怎么确定a,b,c的值,此时第四次回答的错误均可能来源于a,b,c,比如a是21+10000000000,b是10000000+555,c是1000+9998或者第四次回答均可以产生错误,那么第五次提问该如何验证

如果斯芬提前知道这样的提问方式,并且有意识地来选择让数据出错的方式来专门干扰这种方式的话

仅凭第四次提问确实没办法独立完成对数据的校对,但我们可以通过拉大第五次提问的位数来对抗这种混淆

例如斯芬给出的第四次回答的位数为1*10^10,

那么第五次提问就将 k1 k2 k3设定为 1 , 1*10^(10+1),1*10^(20+1)

或者将k1 k2 k3的顺序进行调转 例如改成 10000000,1,1000

这样...应该...就能获取足够的信息来确定abc的值了(瘫)



用具体数字来说明的话(我取个小一点的数字吧...)


不出现混淆的情况:
a:2                                      
b:3
c:5

d:50302

 

出现混淆的情况:
混淆a:2                            真实a:1000002          
b:3
c:5

d:1050302

将间隔调整为1*10^(6+1)后

e:5000000031000002

就可以获取到无混淆的abc值了....

 

(数零数到头昏)

 

,由刁刁茶茶丸修改
链接到点评
×
×
  • 新建...

重要消息

为使您更好地使用该站点,请仔细阅读以下内容: 使用条款