20:反反复复
来源:互联网 发布:监守自盗 知乎 编辑:程序博客网 时间:2024/05/01 12:08
原题链接
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
Mo和Larry发明了一种信息加密方法。他们首先决定好列数,然后将信息(只包含字母)从上往下依次填入各列,并在末尾补充一些随机字母使其成为一个完整的字母矩阵。例如,若信息是“There's no place like home on a snowy night”并且有5列,Mo会写成:
t o i o yh p k n ne l e a ir a h s ge c o n hs e m o tn l e w x
注意Mo只会填入字母,且全部是小写形式。在这个例子中,Mo用字母“x”填充了信息使之成为一个完整的矩阵,当然他使用任何字母都是可以的。
Mo根据这个矩阵重写信息:首先从左到右写下第一行,然后从右到左写下第二行,再从左到右写下第三行……以此左右交替地从上到下写下各行字母,形成新的字符串。这样,例子中的信息就被加密为:toioynnkpheleaigshareconhtomesnlewx。
你的工作是帮助Larry从加密后的信息中还原出原始信息(包括填充的字母)。
- 输入
- 第一行包含一个整数(范围2到20),表示使用的列数。
第二行是一个长度不超过200的字符串。 - 输出
- 一行,即原始信息。
- 样例输入
5toioynnkpheleaigshareconhtomesnlewx
- 样例输出
theresnoplacelikehomeonasnowynightx
源码
#include <iostream>#include <cstring>using namespace std;int main(){ char A[100][100]; int col, i, j, row, index=0; string str; cin >> col >> str; row = (int)str.size()/col; if (str.size()%col != 0) row++; for (i=0; i<row; i++){ if (i%2 == 0){ for (j=0; j<col; j++) A[i][j] = str[index++]; } else{ for (j=col-1; j>=0; j--) A[i][j] = str[index++]; } } for (j=0; j<col; j++) for (i=0; i<row; i++) cout << A[i][j]; cout << endl; return 0;}
阅读全文
0 0
- 20:反反复复
- 20_反反复复
- 反反复复
- 反反复复
- 反反复复
- 反反复复
- 百练noi 20:反反复复
- 反反复复反反复复反反复复
- 反反复复反反复复反反复复
- 发发反反复复反反复复反反复复反反复复h
- 反反复复反反复复飞
- 孙菲菲反反复复反反复复
- 对方反反复复反反复复吩咐
- 的反反复复福福福福福福福福福发反反复复
- 防守对方发生的反反复复反反复复反反复复反反复复反反复复反
- POJ2039:反反复复
- 反复发反反复复反反复复奉化
- 发反反复复反反复复反复的
- UVA
- Elasticsearch权威指南-学习笔记
- iOS 创建子线程方法
- Qt Widgets、QML、Qt Quick的区别
- segmentation fault (core dumped)调试
- 20:反反复复
- 国庆来个maven父子项目创建
- mongo3.x yarn配置
- game——Guess the number!
- 第一次使用construct的感受
- C语言排序函数qsort( )
- Dash Speed
- linux下用户理解
- Cocos2D-x游戏开发之:CCNotificationCenter观察者模式基础