bod 和 alice 計畫使用一種全新的編碼方案,令人驚訝的是這不是乙個公開的公匙密碼,但是他們的編碼基於密匙,在
philadelphia on february 16th他們的會議中選擇了密匙,他們選擇的密匙是乙個兩兩不等的整數序列,a1.....an,大於0並且小於等於n,編碼基於一下原則。
下面的資訊是關鍵,這樣關鍵的人物資訊和數字相對齊,乙個字元在i位置,編碼的時候把他放在ai,ai就是相應數字位置的關鍵,並且他們以同樣的編碼資訊進行編碼,這個過程重複k次,在k次以後他們交換彼此的編碼。
這段資訊的長度小於或者等於n,如果小於n,那麼就在資訊的後面能新增空格使它等於n,
寫乙個程式完成這個編碼
本題先開始給了n個數,代表編碼的方案,例如
sample input
10sample output4 5 3 7 2 8 1 6 10 9
1 hello bob
1995 cerc
00
bolheol bc rce
給出的4 5 3 7 2 8 1 6 10 9
表示:
第乙個位置的字元經過一次置換後會出現在第4位置, 第二位置的編號會到第五位置.....
所以可以得到所有的置換群為(1,4,7)(2,5)(3)(6,8)(9,10) 這是經過0次變換的結果。
經過k次變換只需要單獨的在每個群裡進行移動就行了,所以,求出置換群後進行下標取模就行了。#include#include#include#include#define ll long long
#define inf 0x3f3f3f3f
#define bug puts("************")
using namespace std;
const int n=300;
int index[n];
int vis[n];
int num[n]; ///置換群的大小
int arr[n][n]; ///記錄每個置換群的內容
char s[n];
char str[n];
int main()
int cnt=0; ///置換群的總個數
for(int i=1;i<=n;i++)
cnt++;}}
// for(int i=0;i
POJ 1026 Cipher 置換群的冪
題目大意 給出乙個置換群,再給出數個字串,每個字串需要輸出執行 k 次置換群後的答案 題目分析 置換群的 k 次冪,直接寫就行了 include include include include include include include include include include inclu...
poj 1026 加密問題
題目大意是,給定一串密匙,求原始碼經過密匙加密k次後的內容。加密的規則是 原始碼第i個字母調換到密匙中ai指定的位置。同時,原始碼長度小於等於密匙長度,當原始碼長度小於密匙長度時,在原始碼後使用空格填充保證二者長度相等。最開始使用的直接模擬加密過程的方法,會超時。明顯要考慮加密過程中加密的內容週期問...
置換開方 POJ3128
題意 給乙個置換,判斷是否是另乙個置換的平方。乙個置換可以表示成迴圈的乘積。對於長度為偶數的迴圈,它的平方會 成兩個長度各位之前一半的迴圈。對於長度為奇數的迴圈,它的平方不會 所以對於當前置換中長度為偶數的迴圈,一定是以前的置換 出來的,判斷每個長度為偶數的迴圈的個數是否為偶數個即可。對於長度為奇數...