| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3012 人关注过本帖
标题:[求助][ACM]795: Sandorf's Cipher
取消只看楼主 加入收藏
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
收藏
 问题点数:0 回复次数:14 
[求助][ACM]795: Sandorf's Cipher

Count Mathias Sandorf 是 Jules Verne 笔下的英雄,他通过一张硬卡片上的密钥来加密 Trieste 的反叛者们传递的消息。这个密钥是一个 6x6 的网格,其中有一些格子被挖空了。在图 1 中这些被挖空的格子已经已经标记成了白色。在卡片的一端有个缺口作为标记。空白的消息是编码为空字符串的,而非空白的消息则按照下面的 Sandorf 算法加密:

Figure 1: Sandorf's cipher key

  1. 如果一行信息的长度不是 36 的整数倍,就在这行信息的后面添加 `#' 直到其长度是 36 的倍数,然后将此行信息翻转。通常情况下,原始的信息其结尾不会是 #,但在信息的中间有可能会包含 #。例如,下面的消息

    Real Programmers use Fortran. Quiche Eaters use Pascal.

    包含了 55 个字符,因此应当在其末尾添加 17 个空格。在第一部之后,该消息成为如下的样子:

    #################.lacsaP esu sretaE ehciuQ .nartroF esu sremmargorP laeR

  2. 将密钥放在一张纸上,缺口向上。

  3. 将信息中的下面 9 个字符(第一次是头 9 个字符)通过密钥上的小孔写到纸上,从左向右、从上向下,每个小孔中写一个字符。

  4. 将密钥顺时针旋转 90 度并重复第三步开始的动作,直到密钥返回到其起始的位置(缺口向上)。这样就可以得到一个 6x6 的字符矩阵,我们将其称为coded group

  5. 重复从第 2 步开始执行直到所有的信息都复制到 coded group 中。然后将每一个 coded group 中的字符从第一行到最后一行顺序展开。例如,对于上面的信息,会形成如下的两个 coded group

                                  u#l# #          geuhoc
    as#r## raPir
    ec##st sutrl
    ##aa## rQae o
    EP# ## emFR .
    #e#s. meanrs

    将它们连接在一起,就会形成最后的加密信息:

    u#l# #as#r##ec##st##aa##EP# ## #e#s.geuhoc raPir sutrlrQae oemFR .meanrs

Input and Output

编写一个程序对使用 Sandorf 算法加密的程序进行解密。输入的加密信息分成很多行,每行一条。每行的长度都有可能是不同的,但不会超过 108 个字符。在一行当中,除了换行符以外的所有字符都是加密信息的一部分。在输出时,每行输出一条解密信息。将上述信息解密可以得到如下的结果:

Real Programmers use Fortran. Quiche Eaters use Pascal.

Sample Input

irdetn ihtoteao  pesms soiaCet snaoi
#e#r# edt#aasdrtltn ca reyor feneiv
o#kginasksoaemlt f odatrnip as ene
w#lerhiomfte t rSp se ntt.is id,raal
o#r#i#etbanagvareioml nbfooheo lny
e# #s#holp#lpt#iiok# w#so ts.tiis h

H### ##d#l##a####n##o)##Dg#(##i#n#o#

Sample Output

Competition is a disease that sooner
or later infects every trade and
profession and makes it take a long
step forward. Still, it remains the
obligation of every honorable man
to oppose it with his skills.

(Donald Honig)
搜索更多相关主题的帖子: Cipher ACM Sandorf 
2006-12-05 20:36
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
收藏
得分:0 
acm.uva.es/p/v7/795.html
2006-12-05 21:27
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
收藏
得分:0 
呼唤高手
2006-12-06 18:31
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
收藏
得分:0 
有人会吗?
2006-12-07 12:02
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
收藏
得分:0 
好像很难
2006-12-07 21:11
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
收藏
得分:0 
大家加油啊
2006-12-08 20:13
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
收藏
得分:0 
呼唤高手
2006-12-10 11:25
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
收藏
得分:0 
难啊
2006-12-10 17:15
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
收藏
得分:0 
继续呼唤
2006-12-11 13:44
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
收藏
得分:0 
呼唤
2006-12-11 19:38
快速回复:[求助][ACM]795: Sandorf's Cipher
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032816 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved