python 實戰41 破譯密碼

2021-09-10 15:14:15 字數 1787 閱讀 7097

題目內容:

a國情報局抓獲敵國間諜一名,從間諜身上搜出了若干密電,在嚴刑逼供之下,間諜說出了密電加密方法:將明文電報(僅由大寫字母構成)中的所有字母均替換為字母表中向後看的第n個字母,如果超過z,則從a繼續數,這樣就得到了密文,比如attack,向後看第2個字母,就加密為cvvcem。

可還沒等到間諜說出加密用的金鑰(數字n),就被臥底開槍打死,間諜臨死前在地板上畫了bye三個字母。

情報局長看著一條條密電發了愁,但機智的你已經發現,原來間諜在告訴我們,所有密電的明文都以bye結尾!

請編寫程式破譯這些密電吧!

輸入格式:

共一行字串,全部由大寫字母構成的密文。

輸出格式:

共一行字串,破譯後的明文。

輸入樣例1:

jntqzczf

輸出樣例1:

imspybye

my answer

思路:跟著題意一點點弄,不知道是不是正確

pw =

input()

.upper(

)bye =

'bye'

pwlist =

[ord

(i)for i in pw]

byelist =

[ord

(i)for i in bye]

newlist = pwlist[-3

:]decodelist =

''n = newlist[-1

]- byelist[-1

]if n <0:

n =26+ n

for i in pwlist:

if i - n <65:

decodelist +=

(chr

(i-n+26)

)else

: decodelist +=

(chr

(i - n)

)else

:for i in pwlist:

if i - n <65:

decodelist +=

(chr

(i-n+26)

)else

: decodelist +=

(chr

(i - n)

)print

(decodelist)

思路二:窮舉

s =

input()

a ='abcdefghijklmnopqrstuvwxyz'

for n in

range(26

):secret = a[n:

]+ a[

:n]if a[secret.index(s[-1

])]==

'e':

for t in s:

print

(a[secret.index(t)

], end='')

print()

break

思路三:計算金鑰n

s =

input()

a ='abcdefghijklmnopqrstuvwxyz'

n = a.index(s[-1

])-a.index(

'e')

for t in s:

print

(a[(a.index(t)

- n)%26

], end='')

print

()

python 破譯密碼

題目內容 a國情報局抓獲敵國間諜一名,從間諜身上搜出了若干密電,在嚴刑逼供之下,間諜說出了密電加密方法 將明文電報 僅由大寫字母構成 中的所有字母均替換為字母表中向後看的第n個字母,如果超過z,則從a繼續數,這樣就得到了密文,比如attack,向後看第2個字母,就加密為cvvcfm。可還沒等到間諜說...

簡單密碼破譯

problem description 密碼是我們生活中非常重要的東東,我們的那麼一點不能說的秘密就全靠它了。哇哈哈.接下來淵子要在密碼之上再加一套密碼,雖然簡單但也安全。假設淵子原來乙個bbs上的密碼為zvbo941987,為了方便記憶,他通過一種演算法把這個密碼變換成yuanzi1987,這個密...

3977 密碼破譯

快速判斷長度為 x 的串是不是迴圈節,只需要判斷 len x 的串是否為區間的border。雜湊處理。注意到如果 x 不是迴圈節,則它的因數都不會是迴圈節。所以可以列舉 x 的質因子,長度除以質因子之後判斷是不是,直到不是迴圈節為止,這樣就可以得知最短迴圈節的這個質因子的指數。using names...