日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

达芬奇密码题解

發(fā)布時間:2024/1/1 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 达芬奇密码题解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目信息

達芬奇隱藏在蒙娜麗莎中的數(shù)字列:1 233 3 2584 1346269 144 5 196418 21 1597 610 377 10946 89 514229 987 8 55 6765 2178309 121393 317811 46368 4181 1 832040 2 28657 75025 34 13 17711

記錄在達芬奇窗臺口的神秘數(shù)字串:36968853882116725547342176952286

這道題目需要很好的數(shù)感和聯(lián)想能力

依靠數(shù)感,感覺到達芬奇隱藏在蒙娜麗莎中的數(shù)字列是亂序的斐波那契序列

用python生成一下斐波那契序列

a=1 b=1 print(1,end=" ") print(1,end=" ") for i in range(32):c=a+bprint(c,end=" ")a=bb=c

1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578

發(fā)現(xiàn)達芬奇隱藏在蒙娜麗莎中的數(shù)字列是亂序的斐波那契序列

聯(lián)想到記錄在達芬奇窗臺口的神秘數(shù)字串是亂序的flag

且造成亂序的交換位置

和達芬奇隱藏在蒙娜麗莎中的數(shù)字列是亂序的斐波那契序列一樣(但是斐波那契序列有兩個重復元素1,這樣解決導致位置有歧義,會有兩種結果,我們可以都解出來試著提交)

按照這個想法編寫腳本解題

#思考一個問題,斐波那數(shù)列有兩個1,交換后序列中的兩個1到底是原理位置0還是位置1的1我們不知道,那就會出現(xiàn)兩種情況 #但是這只會出現(xiàn)兩種情況,并且兩種可能的序列只有前兩位不一樣 exchange_fibo="1 233 3 2584 1346269 144 5 196418 21 1597 610 377 10946 89 514229 987 8 55 6765 2178309 121393 317811 46368 4181 1 832040 2 28657 75025 34 13 17711 " _fibo="1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 "array="36968853882116725547342176952286" fibo=_fibo.split() e_fibo=exchange_fibo.split() f1="" f2=""for i in range(0,len(e_fibo)):x=e_fibo.index(fibo[i]) #根據(jù)斐波那契數(shù)列第i個位置的元素交換后在哪個下標#index搜索到的是序列從左到右第一個值為參數(shù)的下表,交換后的斐波那契序列第一個就是1,這樣搜出來會導致前兩位交換后的下標都是1#根據(jù)這道題的實際情況,我們只需要把交換后序列的第一個1換成序列中沒有的值,index函數(shù)就會為我們找到另一個1的位置f1+=array[x] #將交換后位置的元素加回到原來的位置i,這里操作array#找另一個1的位置 for i in range(0,len(e_fibo)):x=e_fibo.index(fibo[i],1,len(e_fibo))f2+=array[x]flag1="flag{"+f2[0:1]+f1[1:]+"}" flag2="flag{"+f1[0:1]+f2[1:]+"}"print("一種可能的flag:") print(flag1) print("另一種可能的flag:") print(flag2)

腳本的解為

一種可能的flag:

flag{73995588256861228614165223347687}

另一種可能的flag:

flag{37995588256861228614165223347687}

經(jīng)過提交驗證,正確的flag是

flag{37995588256861228614165223347687}

總結

以上是生活随笔為你收集整理的达芬奇密码题解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。