国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Decryption sequence [模擬]

2019-11-06 06:15:28
字體:
來源:轉載
供稿:網友

加密是個被廣泛關注的問題,現在給出一種對數列加密的算法:

假設有原數列S,S是1到2n2n的一個排列(下標從1開始),因此其中共有2n2n個整數。

現在定義一個數列P,滿足:

Pi={ji(Simod2=1且Sj=Si+1)(否則) Pi={j(Simod2=1且Sj=Si+1)i(否則)

同時我們通過以下操作由S生成另一個數列T:第一步將S所有奇元素刪除,第二步把剩下的所有偶元素按照原來的位置關系排列好,并都除以2,這樣得到一個新的數列。

例如:

對于數列S={4,8,3,2,5,7,1,6},我們可以生成數列P={1,2,1,4,8,2,4,8},數列T={2,4,1,3}。

我們把數列P稱為密文,T稱為密鑰,顧名思義通過這兩個數列,可以還原出原數列。

現在請你完成數列的解密程序。

輸入 多組測試數據(不超過10組),請處理到文件結束。

第一行是一個正整數m(0

#include<cstdio>#include<cstring>int p[110],t[110],ans[110];int m;void init(){ for (int i = 1; i <= m; ++i){ p[i] = i; }}int main(){ while (~scanf("%d",&m)){ init(); memset(ans,0,sizeof(ans)); memset(t,0,sizeof(t)); for (int i = 1; i <= m; ++i) scanf("%d",&p[i]); for (int i = 1; i <= m/2; ++i){ scanf("%d",&t[i]); t[i] *= 2; } int k = 1; for (int i = 1; i <= m; ++i){ if (p[i] == i){ ans[p[i]] = t[k++]; } } for (int i = 1; i <= m; ++i){ if (!ans[i]){ ans[i] = ans[p[i]] -1; } } for(int i = 1; i <=m; ++i){ if (i == 1) 根據題意來就好 可能p的定義不好理解 靜下心好好去想就行


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 青河县| 闵行区| 宁津县| 茶陵县| 饶平县| 沙坪坝区| 延安市| 综艺| 延川县| 甘泉县| 平顶山市| 吉安市| 乌兰浩特市| 钦州市| 雷波县| 故城县| 赤城县| 略阳县| 卢氏县| 河西区| 郎溪县| 宾阳县| 阿图什市| 义乌市| 舟山市| 灵石县| 丰镇市| 革吉县| 平泉县| 宽甸| 平安县| 镇远县| 徐州市| 金塔县| 东台市| 永安市| 乌拉特前旗| 息烽县| 双辽市| 疏附县| 阿瓦提县|