信息战(一)——加密程序

信息战(一)——加密程序

1000ms    65536KB     
64-bit integer IO format:  %lld      Java class name:  Main
 

在战争时期,各个国家都要保证军队的行动保密性,所以在信息传达时会采取各种加密方法。有一天,A国安全局成员Oo(也就是传说中的ZSL),发明了一种对指令的加密方法。具体操作如下,取两个正整数X、Y,对于一段明文字符串,将其按行填入一个X行Y列的矩阵中(非字母不填、而且所有字母要求权转换为大写),若未填满,则按字母表顺序顺次填充(’A’…’Z’循环填充)。比如对于X=3,Y=3,明文为”Problem”时,矩阵填充后的结果为:
PRO
BLE
MAB
这样,Oo就得到了一个矩阵,将他按列输出就得到了Oo所要的的密文“PBMRLAOEB”。由于A国编程人员奇缺。所以Oo向你求助,希望你能够帮助他写一个加密程序,从而使得对于任意给定的X、Y以及明文,程序都能输出正确的密文。

Input

第一行X,Y(0 < X <= 200,0 < Y <= 200)。
第二行至末尾每行均为一个明文(保证明文中字母的个数N <= X*Y)。

Output

对于每一行明文输出对应的一行密文。

Sample Input

3 3
Problem
t  e        s t    
l I  156-*/-  S t
u 45/-90 N I v  \908()  8768 *er #!@$&  S a L 

Sample Output

PBMRLAOEB
TTCEADSBE
LTCIADSBE
UVSNEAIRL

Source

Author

51isoft

代码:

#include"cstdio"
#include"cstring"
#include"iostream"
#include"algorithm"

using namespace std;

char code[40005];
char c[10000000];

int main()
{
    int x,y;
    while(~scanf("%d%d",&x,&y))
    {
        int cnt = 0;
        getchar(); //读入\n
        while(gets(c))
        {
            int len = strlen(c);
            for(int i = 0;i < len;i++)
            {
                if(isalpha(c[i]))
                {
                    code[cnt] = toupper(c[i]);
                    cnt++;
                }
            }
            if(cnt < x*y)
            {
                for(int i = cnt;i < x*y;i++)
                {
                    code[i] = (i-cnt) % 26 + 'A';
                }
            }
            for(int j = 0;j < y;j++)
            {
                for(int i = 0;i < x;i++)
                {
                    printf("%c",code[j + i*y]);
                }
            }
            printf("\n");
            cnt = 0;
            memset(code,0,sizeof(code));
        }
    }
    return 0;
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值