zoukankan      html  css  js  c++  java
  • hiho #1361 Playfair密码表

    题目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代码:

     1 #include "iostream"
     2 #include "string.h"
     3 #include "vector"
     4 #define MAX 201
     5 using namespace std;
     6 
     7 char str[MAX];
     8 bool v[MAX] = { false };
     9 char ans[25];
    10 int n, m;
    11 
    12 int main()
    13 {
    14     cin >> str;
    15     n = strlen(str);
    16     m = 0;
    17 
    18     for (int i = 0; i < n; i++)
    19     {
    20         if (str[i] == 'J')
    21             str[i] = 'I';
    22         if (!v[str[i]])
    23         {
    24             v[str[i]] = true;
    25             ans[m] = str[i];
    26             m++;
    27         }
    28     }
    29 
    30     for (char i = 'A'; i <= 'Z'; i++)
    31     {
    32         if (i == 'J' || v[i])
    33             continue;
    34         ans[m] = i;
    35         m++;
    36     }
    37 
    38     for (int i = 0; i < 25; i++)
    39     {
    40         cout << ans[i];
    41         if ((i + 1) % 5 == 0)
    42             cout << endl;
    43     }
    44 
    45     system("pause");
    46 }
  • 相关阅读:
    EntytyFramework批量更新
    EntityFramework批量Insert
    asp.net MVC Session锁的问题
    谈谈ThreadStatic
    C#中XmlSerializer的内存占用问题
    转:【译】Asp.net MVC 利用自定义RouteHandler来防止图片盗链
    面试心得
    Part 39 AngularJS route change events
    Part 38 AngularJS cancel route change
    Part 37 Difference between $scope and $rootScope
  • 原文地址:https://www.cnblogs.com/SeekHit/p/5796757.html
Copyright © 2011-2022 走看看