转跳到内容

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


推荐贴

题目背景(不阅读题目背景,对回答题目没有任何影响,因此可以随意跳过题面背景):

云雾猫猫随着风漂到了一个干旱的地方,停在了一个宏伟的雕像门口,遇到了来此考古的学者猫

747835928_fu.jpg.967a6c9aaae21a8f540d3b4e22809e24.jpg

学者猫:你知道斯芬克斯之谜吗,斯芬克斯会拦下路过的人,如果回答错误的话,是会被斯芬克斯吃掉的。

(正当云雾猫猫要说话,此时雕像处传来的动静)

神秘的声音:路过的旅行者啊,请回答我的问题,否则我会降下神的惩罚

云雾猫猫(打断):人

神秘的声音:傲慢的人类啊,你以为我会出一道题目两次吗,告诉我,这座雕像,有多少粒沙子,多少个砖块,由多少个人砌成

云雾猫猫:这怎么可能

神秘的声音:想知道答案,那就向我提问吧,不过我只有有限的耐心

题目描述:

斯芬克斯会给云雾猫猫五次机会,其中假设沙子的个数是a,砖块的个数是b,人的个数是c,每次云雾猫猫会给出三个数,k1,k2,k3,在这之后,斯芬克斯会告诉云雾猫猫k1*a+k2*b+k3*c是多少,其中一次问答中,斯芬克斯会给出错误答案

五次提问后,云雾猫猫需要回答a,b,c的值是多少,因此,你需要构造出一种提问方式,使得云雾猫猫一定能够回答出答案

 

注意:

1.题面经过修正,第一次题面有误

2.斯芬克斯会在五次回答中的一次回答给出错误答案

3.题目的答案和提问的系数,均在自然数范围内

4.答案正确且对回答做出具体解释的人会被特别表彰w

 

 

 

 

 

 

,由Nemakori修改
链接到点评
1 分钟前,14741077说道:

四次就行……

分别问

1,0,0

0,1,0

0,0,1

如果有答案等于0就再问一遍

理想情况下,三次分别代表对应的数字

=w=

抱歉抱歉,刚才猫猫犯蠢把题面最重要的部分落了,请注意加粗地方的补充,其中一次斯芬克斯会做出错误回答哦

链接到点评

注意:

1.题面经过修正,第一次题面有误

2.斯芬克斯会在五次回答中的一次回答给出错误答案

3.不阅读题目背景,对回答题目没有任何影响,因此可以随意跳过题面背景

4.题目的答案和提问的系数,均在自然数范围内

5.答案正确且对回答做出具体解释的人会被特别表彰w

,由Nemakori修改
注释
骚男 骚男 1.00节操 可以直接在一楼修改嘛~
链接到点评
4 分钟前,hentai14说道:

跑去問了chatGPT, 他回答的似乎有道理:mx040: <--但這人腦袋空空了

加上驗證用的兩組

  • (1,1,0)
  • (1,0,1)

:wn001:  诶诶,怎么还有人工智能参赛选手,所以说GPT给出的理由是什么呢(补充 : 此次询问不告知正确性 具体正确楼层与标准题解证明在明日给出)

,由Nemakori修改
链接到点评
23 分钟前,Nemakori说道:

:wn001:  诶诶,怎么还有人工智能参赛选手,所以说GPT给出的理由是什么呢(补充 : 此次询问不告知正确性 具体正确楼层与标准题解证明在明日给出)

因為複製時不知道為何英文數字都被重複三次, 所以節錄重點

设定这五个提问之后,斯芬克斯会给出五个答案 A1,A2,A3,A4,A5,其中:

  • A1=a
  • A2=b
  • A3=c
  • A4=a+b
  • A5=a+c

即使其中有一个答案是错误的,我们可以使用以下方法确定正确的 a的值:

  • b=A4a=A4-A1
  • c=A5−a=A5-A1

嗯... A2 != A4-A1時, 也分不出來哪個是對的...

 

引用

在这个问题中,云雾猫猫需要通过斯芬克斯给出的答案来确定三个变量 aaabbbccc 的值,其中在五次提问中有一次提问得到的是错误的答案。为了确保云雾猫猫能在五次提问后正确地确定 aaabbbccc 的值,我们可以构造一种提问方式,使得即使有一个答案是错误的,云雾猫猫也能确定正确的 aaabbbccc 的值。

以下是一个有效的提问策略及其解释:

1. 提问方式

为了保证云雾猫猫能够在五次提问中识别出错误的答案并确定正确的 aaabbbccc 的值,我们可以构造如下的五组提问:

  1. (1,0,0)(1, 0, 0)(1,0,0)
  2. (0,1,0)(0, 1, 0)(0,1,0)
  3. (0,0,1)(0, 0, 1)(0,0,1)
  4. (1,1,0)(1, 1, 0)(1,1,0)
  5. (1,0,1)(1, 0, 1)(1,0,1)

这些提问方式的选择基于以下几个原因:

2. 验证方法

设定这五个提问之后,斯芬克斯会给出五个答案 A1,A2,A3,A4,A5A_1, A_2, A_3, A_4, A_5A1,A2,A3,A4,A5,其中:

  • A1=aA_1 = aA1=a
  • A2=bA_2 = bA2=b
  • A3=cA_3 = cA3=c
  • A4=a+bA_4 = a + bA4=a+b
  • A5=a+cA_5 = a + cA5=a+c

即使其中有一个答案是错误的,我们可以使用以下方法确定正确的 aaabbbccc 的值:

3. 解的构造与检测

从上述提问中获得的答案可以形成一个方程组(假设第 iii 次提问的答案为 AiA_iAi,其中 iii 从1到5):

  1. a=A1a = A_1a=A1
  2. b=A2b = A_2b=A2
  3. c=A3c = A_3c=A3
  4. a+b=A4a + b = A_4a+b=A4
  5. a+c=A5a + c = A_5a+c=A5

根据这些方程可以推导出:

  • b=A4−ab = A_4 - ab=A4a
  • c=A5−ac = A_5 - ac=A5a

确定错误答案

由于在五个答案中有一个是错误的,我们可以通过以下步骤来检测错误并得到正确的 aaabbbccc 的值:

  1. 假设 A1A_1A1, A2A_2A2, A3A_3A3, A4A_4A4, A5A_5A5 是从提问中得到的结果。

  2. 对所有可能的 AiA_iAi 为错误答案的情况进行验证:

    • 计算 aaaA1A_1A1
    • 根据 aaa 计算 bbbccc
      • b=A4−ab = A_4 - ab=A4a
      • c=A5−ac = A_5 - ac=A5a
  3. 对每种可能性计算错误答案的验证:

    • 对所有其他答案进行计算,检查是否满足:
      • 如果 i≠1i \neq 1i=1,验证 Ai=k1⋅a+k2⋅b+k3⋅cA_i = k_1 \cdot a + k_2 \cdot b + k_3 \cdot cAi=k1a+k2b+k3c 是否正确
      • 如果存在一个 iii 满足这一条件,则 AiA_iAi 是错误的答案,其余答案应该是正确的。

4. 具体算法示例

假设 a=A1a = A_1a=A1,计算 bbbccc

  • b=A4−A1b = A_4 - A_1b=A4A1
  • c=A5−A1c = A_5 - A_1c=A5A1

验证公式 Ai=k1⋅a+k2⋅b+k3⋅cA_i = k_1 \cdot a + k_2 \cdot b + k_3 \cdot cAi=k1a+k2b+k3c 对于 i≠1i \neq 1i=1 是否成立:

  • 对于每个答案 i≠1i \neq 1i=1,将 a,b,ca, b, ca,b,c 代入公式中计算,比较是否与实际获得的 AiA_iAi 相符。
  • 找到不符合的答案即为错误答案。

5. 举例

假设我们从斯芬克斯那里得到以下答案:

  • A1=3A_1 = 3A1=3
  • A2=5A_2 = 5A2=5
  • A3=7A_3 = 7A3=7
  • A4=8A_4 = 8A4=8
  • A5=10A_5 = 10A5=10

我们可以计算:

  • a=3a = 3a=3
  • b=A4−a=8−3=5b = A_4 - a = 8 - 3 = 5b=A4a=83=5
  • c=A5−a=10−3=7c = A_5 - a = 10 - 3 = 7c=A5a=103=7

验证其他答案是否符合计算:

  • 计算验证:

    A1=3A_1 = 3A1=3

    A2=5A_2 = 5A2=5

    A3=7A_3 = 7A3=7

    A4=3+5=8A_4 = 3 + 5 = 8A4=3+5=8

    A5=3+7=10A_5 = 3 + 7 = 10A5=3+7=10

所有公式均成立,说明 A1,A2,A3,A4,A5A_1, A_2, A_3, A_4, A_5A1,A2,A3,A4,A5 的答案都是正确的。

如果实际中有一个答案是错误的,按照上述方法验证可以识别并找到正确的 a,b,ca, b, ca,b,c 值。

结论

通过上述提问策略与验证方法,我们可以确保云雾猫猫在面对一次错误的答案时,依然能够正确地确定 aaabbbccc 的值。这种方法利用了提问的线性组合和错误答案的检查来解出正确答案。

 

hentai14在看最新一期的月报时想起以前的月报一时兴起前往整理,发现以前留下的私房钱 10节操

链接到点评

首先提问三组线性无关的向量a1,a2,a3,然后提问a4,a5取到在a1到a5中任取其三线性无关,不妨取a1+a2+a3,a1+2a2+3a3。通过a1,a2,a3的答案来验算a4,a5,如果是a4到a5中有一个错误答案,则a4和a5的验算中,只有错误的一个会验算不匹配,对于这种情况,由于我们有线性无关的三组变量a1,a2,a3,所以可以通过它们求出正解。

如果a1到a3中有一个错误答案,则a4和a5的验算全不匹配。在这种情况下,由于a1,a4,a5和a2,a4,a5和a3,a4,a5都是线性无关的三组变量,所以我们可以求出三组解,由于a1到a3中,有只仅有一个错误向量,所以这三组向量中仅有一组包含错误向量,所以易知这三组解中,有且仅有两个解相等且为正解,结束。

:YangTuo_21:应该就这样了,好久没动脑子了

关于a4,a5,和a1到a3中任取一个线性无关的证明

剧透

列一个矩阵A=

111

123

xyz

则行列式的值为2z+3x+y-2x-3y-z=x-2y+z。当x,y,z中任取其取值为1,剩下两者取值为0时,行列式的值均不为0,然后就是显然(摆烂)a4,a5与a1到a3中任取一个线性无关

SdiV1UPh_o.png

,由367ddd修改
链接到点评
20 分钟前,hentai14说道:

因為複製時不知道為何英文數字都被重複三次, 所以節錄重點

设定这五个提问之后,斯芬克斯会给出五个答案 A1,A2,A3,A4,A5,其中:

  • A1=a
  • A2=b
  • A3=c
  • A4=a+b
  • A5=a+c

即使其中有一个答案是错误的,我们可以使用以下方法确定正确的 a的值:

  • b=A4a=A4-A1
  • c=A5−a=A5-A1

嗯... A2 != A4-A1時, 也分不出來哪個是對的...

 

 

w 其实这个做法已经很接近正确答案了哦 因为他其实可以很容易确定其中三组是正确的,但是没法通过那三组正确的答案去确定剩下的两组哪组是错误的,已经很厉害了哦

链接到点评

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

链接到点评
34 分钟前,刁刁茶茶丸说道:

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

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

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

,由Nemakori修改
链接到点评
11 分钟前,367ddd说道:

首先提问三组线性无关的向量a1,a2,a3,然后提问a4,a5取到在a1到a3中任取其一与两者匹配线性无关,不妨取a1+a2+a3,a1+2a2+3a3。通过a1,a2,a3的答案来验算a4,a5,如果是a4到a5中有一个错误答案,则a4和a5的验算中,只有错误的一个会验算不匹配,对于这种情况,由于我们有线性无关的三组变量a1,a2,a3,所以可以通过它们求出正解。

如果a1到a3中有一个错误答案,则a4和a5的验算全不匹配。在这种情况下,由于a1,a4,a5和a2,a4,a5和a3,a4,a5都是线性无关的三组变量,所以我们可以求出三组解,由于a1到a3中,有只仅有一个错误向量,所以这三组向量中仅有一组包含错误向量,所以易知这三组解中,有且仅有两个解相等且为正解,结束。

:YangTuo_21:应该就这样了,好久没动脑子了

虽然我现在不能对你的回答给出正确与否的评价,但是我有理由怀疑佬是不是接触过OI

链接到点评

:mx072:猪脑过载了

①  1  0  0 =a

②  0  1  0 =b

③  0  0  1 =c

④  1  1  0=a+b

⑤  1  0  1=a+c

通过①④和①⑤可以得到第二组b和c

若①为正确,那么两组bc中仅有b或者c不同

若①为错误,那么两组bc均不相同

 

链接到点评
1 分钟前,U咩说道:

:mx072:猪脑过载了

①  1  0  0 =a

②  0  1  0 =b

③  0  0  1 =c

④  1  1  0=a+b

⑤  1  0  1=a+c

通过①④和①⑤可以得到第二组b和c

若①为正确,那么两组bc中仅有b或者c不同

若①为错误,那么两组bc均不相同

 

:mx029:其实在①③正确的情况下 我们这个时候通过正确的ac可以给④也解出一个b 这个时候我们有②,④解出的两个b的值 但是我们无法判断2,4的b哪个是正确的哦

链接到点评
4 分钟前,U咩说道:

:mx072:猪脑过载了

①  1  0  0 =a

②  0  1  0 =b

③  0  0  1 =c

④  1  1  0=a+b

⑤  1  0  1=a+c

通过①④和①⑤可以得到第二组b和c

若①为正确,那么两组bc中仅有b或者c不同

若①为错误,那么两组bc均不相同

 

:a6:这种方式总有且仅有一个字母无法算出(我最开始用这个方法也猪脑过载了,卡在那了)

,由IOPU修改
链接到点评
刚刚,Nemakori说道:

嗯嗯 所以说这是一个很接近正确答案的解法哦 其实已经很厉害啦~

:397604175_SSB(3):很接近正确解法?

我总感觉在五次询问中间应该有有一个if来判断接下来的k1,k2,k3应该是什么

但是我试了几个,仍然存在有一种情况其中一个字母无法判断

链接到点评
3 分钟前,IOPU说道:

:397604175_SSB(3):很接近正确解法?

我总感觉在五次询问中间应该有有一个if来判断接下来的k1,k2,k3应该是什么

但是我试了几个,仍然存在有一种情况其中一个字母无法判断

hhh 我第一次看这题的时候 也卡了很久啦 一开始就想到了上面那个做法,然后就抓住题目的依次询问,可以通过得到的答案的值来决定下一次询问,然后就卡在这个坑里了,等佬看见我的题解就知道为什么很接近正确做法了QwQ

,由Nemakori修改
链接到点评
29 分钟前,Nemakori说道:

:mx029:其实在①③正确的情况下 我们这个时候通过正确的ac可以给④也解出一个b 这个时候我们有②,④解出的两个b的值 但是我们无法判断2,4的b哪个是正确的哦

:mx072:其实刚发出去就反应过来了(

猪脑真的过载了,蹲明天的答案

链接到点评
6 分钟前,挼挼说道:

①1 0 0

②0 1 0

③0 0 1

④1 1 1

⑤1 1 1

①错了时,④-②-③,⑤-②-③对比即得

②、③同理

④、⑤错了,①+②+③比较也能得出

这应该没问题吧?

不是很自信

你这个解法肯定不对

比方说你确定了,前三项求和和后面4、5都对不上

那你不知道1、2、3具体哪个错了呀(

链接到点评

由题意,需要构造五个向量kn(k1,k2,k3),并且保证任取3个kn都互相线性无关。

不妨构造(1,0,0)(0,1,0)(0,0,1)(1,1,1)(1,-2,2)为k1、k2、k3的取值,

那么得到如下的五条方程:(Pn为第n次提问时得到的求和答案)

①P1=a

②P2=b

③P3=c

④P4=a+b+c

⑤P5=a-2b+2c

将上述五条方程中任意舍弃一条,将剩余部分构造为方程组,得到包含等式②③④⑤的方程组1、包含等式①③④⑤的方程组2、包含等式①②④⑤的方程组3、包含等式①②③⑤的方程组4、包含等式①②③④的方程组5。

这五个方程组中仅有一个会有解,那个解就是abc的值。

注释
骚男 骚男 80.00节操 奖励!
链接到点评
18 分钟前,danielrosen4说道:

由题意,需要构造五个向量kn(k1,k2,k3),并且保证任取3个kn都互相线性无关。

不妨构造(1,0,0)(0,1,0)(0,0,1)(1,1,1)(1,-2,2)为k1、k2、k3的取值,

那么得到如下的五条方程:(Pn为第n次提问时得到的求和答案)

①P1=a

②P2=b

③P3=c

④P4=a+b+c

⑤P5=a-2b+2c

将上述五条方程中任意舍弃一条,将剩余部分构造为方程组,得到包含等式②③④⑤的方程组1、包含等式①③④⑤的方程组2、包含等式①②④⑤的方程组3、包含等式①②③⑤的方程组4、包含等式①②③④的方程组5。

这五个方程组中仅有一个会有解,那个解就是abc的值。

懂了,5和4不一样就可以定位到123哪里出了问题

把5改成2 3 4即可

假设1有问题,12与45比较则会发现两个不同的结果与3都匹配不上,13同理,只有23与45比较会有两个相同结果,2、3同理

假设4有问题,则会发现5与其它如12比较会和3对上,则4有问题,5同理

链接到点评
45 分钟前,danielrosen4说道:

由题意,需要构造五个向量kn(k1,k2,k3),并且保证任取3个kn都互相线性无关。

不妨构造(1,0,0)(0,1,0)(0,0,1)(1,1,1)(1,-2,2)为k1、k2、k3的取值,

那么得到如下的五条方程:(Pn为第n次提问时得到的求和答案)

①P1=a

②P2=b

③P3=c

④P4=a+b+c

⑤P5=a-2b+2c

将上述五条方程中任意舍弃一条,将剩余部分构造为方程组,得到包含等式②③④⑤的方程组1、包含等式①③④⑤的方程组2、包含等式①②④⑤的方程组3、包含等式①②③⑤的方程组4、包含等式①②③④的方程组5。

这五个方程组中仅有一个会有解,那个解就是abc的值。

感觉做数学题还是不能在熬夜状态做:1529987897_SSA(2):

,由挼挼修改
链接到点评
×
×
  • 新建...

重要消息

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