题目1 : Playfair密码表

时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述

小Hi和小Ho经常用Playfair密码表加密自己的代码。 密码表是按以下步骤生成的。

1. 随机选择一个只包含大写字母的单词S作为密钥。

2. 将S中的所有字母J替换为字母I。

3. 将S中的字母依次填写进一个5x5的矩阵,按照从上到下、从左到右的顺序填充格子。填充过程中略过已经在密码表中的字母。

4. 将'A'-'I', 'K'-'Z'(除去J之外的所有大写字母)中没有出现在密码表中的大写字母按照字母表顺序填入矩阵剩余的格子中。

举个例子:单词DIJSTRA,替换字母得到DIISTRA;将DIISTRA填入矩阵得到的密码表为(注意第二个I被略过了):

DISTR
A....
.....
.....
.....

最后将剩余字母填入,得到密码表:

DISTR
ABCEF
GHKLM
NOPQU
VWXYZ

给定作为密钥的单词,你能求出密码表吗?

输入

第1行:一行字符串,只包含大写字母,长度不超过200

输出

共5行,每行5个字母,表示密码表。

样例输入
HIHOCODER
样例输出
HIOCD
ERABF
GKLMN
PQSTU
VWXYZ

思路:

记录单词S中出现过的字母,因为条件设定好了输出5x5 的矩阵,所以可以直接用一维数组,存放最后输出的结果,如果是nxn的矩阵,可设置一个变量m,用[m/5][m%n]作为二维数组的下标,每存一个数,m++。

strlen(),在string.h的头文件中

AC代码:

 #include "iostream"
#include "string.h"
#include "vector"
#define MAX 201
using namespace std; char str[MAX];
bool v[MAX] = { false };
char ans[];
int n, m; int main()
{
cin >> str;
n = strlen(str);
m = ; for (int i = ; i < n; i++)
{
if (str[i] == 'J')
str[i] = 'I';
if (!v[str[i]])
{
v[str[i]] = true;
ans[m] = str[i];
m++;
}
} for (char i = 'A'; i <= 'Z'; i++)
{
if (i == 'J' || v[i])
continue;
ans[m] = i;
m++;
} for (int i = ; i < ; i++)
{
cout << ans[i];
if ((i + ) % == )
cout << endl;
} system("pause");
}

hiho #1361 Playfair密码表的更多相关文章

  1. React中禁止chrome填充密码表单

    当 input 的 type="password" 时,chrome浏览器会以 type="password" 为标识记住输入的用户名和密码, 如果chrome ...

  2. python playfair

    #########################Playfair密码######################### #约定1:若明文字母数量为奇数,在明文末尾添加一个'Z' #约定2:'I'作为 ...

  3. CDOJ 1270 Playfair(模拟)

    题目链接 Playfair is a kind of substitution cipher.And the encryption role is simple.In general,there ar ...

  4. javascript实现playfair和hill密码算法

    时至期末,补习信息安全概论作业.恰巧遇古典密码学算法中的playfair算法和hill算法,用javascript语言实现起来是在有趣,边查百度边编码,顺便好好补习一下javascript基础. pl ...

  5. 密码学笔记——playfair密码

     Playfair密码(Playfair cipher 或 Playfair square)一种替换密码,1854年由查尔斯·惠斯通(Charles Wheatstone)的英国人发明. 例题: 某种 ...

  6. JVM详解之:java class文件的密码本

    目录 简介 一个简单的class ClassFile的二进制文件 class文件的密码本 magic version 常量池 描述符 access_flags this_class和super_cla ...

  7. 实验吧 Fair Play

    知识点:playfair密码以前没见过 Playfair密码(英文:Playfair cipher 或 Playfair square)是一种使用一个关键词方格来加密字符对的加密法,1854年由查尔斯 ...

  8. id0-rsa WP合集

    忙里偷闲做做题wwwwwwwwwwwww Intro to Hashing Intro to PGP Hello PGP Hello OpenSSL Intro to RSA Caesar Hello ...

  9. 实例讲解 SQL 注入攻击

    这是一篇讲解SQL注入的实例文章,一步一步跟着作者脚步探索如何注入成功,展现了一次完整的渗透流程,值得一读.翻译水平有限,见谅! 一位客户让我们针对只有他们企业员工和顾客能使用的企业内网进行渗透测试. ...

随机推荐

  1. IIS------配置.Net 4.0

    转载: http://blog.csdn.net/mazhaojuan/article/details/7660657

  2. python实现软件的注册功能(机器码+注册码机制)

    http://www.cnblogs.com/cquptzzq/p/5940583.html 一.前言: 目的:完成已有python图像处理工具的注册功能 功能:用户运行程序后,通过文件自动检测认证状 ...

  3. logo上传

  4. Python + OpenCV2 系列:3 - python 字符串,类,编码规范

    首先,强烈推荐<<简明 Python 教程>> Swaroop, C. H. 著 沈洁元 译 其实,这本书里已经把python的最基本的用法,编码等等介绍的很好,这里把我用到的 ...

  5. 正则表达式分组()、不捕获(?:)和断言(?<=)详解

    分组 分组在正则中用()表示,根据小菜理解,分组的作用有两个: 1.将某些规律看成是一组,然后进行组级别的重复,可以得到意想不到的效果. 2.分组之后,可以通过后向引用简化表达式(\1 或者$1). ...

  6. PHP isset 函数作用

    isset函数是检测变量是否设置. 格式:bool isset ( mixed var [, mixed var [, ...]] ) 返回值: 若变量不存在则返回 FALSE 若变量存在且其值为NU ...

  7. Mac常用命令

    ~ 当前所在目录# 超级用户提示符$ 普通用户提示符 Alfred2 //呼出 option + space rm -rf //删除文件夹pwd //打印当前目录 print working dire ...

  8. Orchard源码分析(4):Orchard.Environment.OrchardStarter类

    概述 OrchardStarter类是个静态类,主要作用是配置Autofac容器以及创建IOrchardHost(DefaultOrchardHost)对象,分别对应CreateHost和Create ...

  9. Python开发【第二篇】:初识Python

    Python开发[第二篇]:初识Python   Python简介 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏 ...

  10. Linux消息队列应用

    #include"sys/types.h" #include "sys/msg.h" #include "unistd.h" #includ ...