c662. Hello Oscar
標籤 :
通過比率 : 37人/39人 ( 95% ) [非即時]
評分方式:
Tolerant

最近更新 : 2024-05-03 16:29

內容

c109: 00306 - Cipher 是一個文字加密的練習。

題目規則如下:

1) 選定一個祕密鍵,祕密鍵是由 0 ~ n-1 的數字所構成,但是排列 的順序卻是他們任意挑選的。

2) 把要編碼的訊息(明文)寫在秘密鍵下面,每個字元與秘密鍵的一數字對齊。位於位置i的字元  經編碼後其位置為 ai,ai為秘密鍵中第i個位置的值。明文中的每個字元編碼後就得到密文了。這密文還可以用同樣的策略再加密,經過了 k 次加密後產生密文。

3) 本題假設明文的長度剛好等於祕密鍵的長度。

 

Patrick 在練習這個題目時,發現當 k 值很大時,結果會逾時,

於是他假設一定存在一個值 ( 以下稱 oscar )

當加密的次數達到 oscar 時,又會變回原來的明文。

所以只要做 k % oscar 次即可。

請你幫忙找出 oscar 值。

 

假設祕密鍵為 2 3 5 4 1 6 0
明文為分解為 p a t r i c k

加密回次及結果如下:

1: kipartc
2: crkiapt
3: tacrikp
4: pitarck
5: krpiatc
6: cakript
7: ticarkp
8: prtiack
9: kapritc
10: cikarpt
11: trciakp
12: patrick
 
輸入說明

每行一組祕密鍵,請您計算出用這組祕密鍵加密時的 oscar 值。

鍵的長度 2 < n < 1000

輸出說明
範例輸入 #1
2 3 5 4 1 6 0
0 1 2 4 3
範例輸出 #1
12
2
測資資訊:
記憶體限制: 512 MB
提示 :
標籤:
出處:
it's david [管理者: asnewchien@g ... (david) ]

本題狀況 本題討論 排行

編號 身分 題目 主題 人氣 發表日期
18094 es611543 (afa) c662
解法思路(C++版)
727 2019-06-16 17:52