題目內容:
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...