百练1041-反反复复-2016正式C题
C:反反复复
- 总时间限制:
- 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的字符串。 - 输出
- 一行,即原始信息。
- 样例输入
-
5 toioynnkpheleaigshareconhtomesnlewx
- 样例输出
-
theresnoplacelikehomeonasnowynightx
- 来源
- East Central North America 2004
-
1 #include <iostream> 2 #include <stdio.h> 3 #include <string> 4 #include <ctype.h> 5 6 using namespace std; 7 8 int main() { 9 int co; //lie shu 10 scanf("%d", &co); 11 12 // cout << co << endl; 13 getchar(); 14 15 char aaa[205]; 16 gets(aaa); 17 // cout <<" here " << endl; 18 19 string bbb = aaa; 20 int l = bbb.size(); 21 22 int row = l / co; //hang shu 23 char ma[row][co]; 24 int k = 0; 25 26 for(int i = 0; i < row; i++) { 27 if(i % 2 == 0) { 28 for(int j = 0; j < co; j++) { 29 ma[i][j] = bbb[k]; 30 k++; 31 //cout << ma[i][j]; 32 } 33 } 34 else{ 35 for(int j = co -1; j >= 0; j--) { 36 ma[i][j] = bbb[k]; 37 k++; 38 } 39 } 40 } 41 42 /* 43 //show 44 for(int i = 0; i < row; i++) { 45 for(int j = 0; j < co; j++) { 46 cout << ma[i][j] << " "; 47 } 48 cout << endl; 49 } 50 */ 51 52 53 for(int i = 0; i < co; i++) { 54 for(int j = 0; j < row; j++) { 55 cout << ma[j][i]; 56 } 57 } 58 59 return 0; 60 61 }
提交网址:http://bailian.openjudge.cn/practice/2039/
网上的方法有些繁琐,这里给了一个简单的
转载于:https://www.cnblogs.com/QingHuan/p/6993288.html
百练1041-反反复复-2016正式C题相关推荐
- 水题: OpenJudge (百练 )2807 : 两倍
(百练 )2807 : 两倍 (http://bailian.openjudge.cn/practice/2807/) 描述 给定2到15个不同的正整数,你的任务是计算这些数里面有多少个数对满足:数对 ...
- 北大OJ百练——4075:矩阵旋转(C语言)
百练的这道题很简单,通过率也达到了86%,所以我也就来贴个代码了...下面是题目: 不过还是说一下我的思路: 这道题对一个新来说,可能是会和矩阵的转置相混淆,这题并不是要我们去求矩阵的转置. 这题,我 ...
- 百练(十三~十六)题解
百练(十三) Bailian2806 公共子序列[最长公共子序列+DP] - 海岛Blog - CSDN博客 Bailian3143 验证"歌德巴赫猜想"[筛选法]_海岛Blog- ...
- 程序设计入门经典题解(百练篇)
参考链接:PKU百练题解(Bailian) Bailian1017 装箱问题[贪心] - 海岛Blog - CSDN博客 POJ1088 Bailian1088 滑雪[DFS+记忆化搜索]_海岛Blo ...
- 钓鱼问题(百练1042)
★问题描述: 约翰正在钓鱼.他有h个小时可用(1 <= h <= 16),并且该区域有n个湖泊(2 <= n <= 25),沿着一条单向公路可达.约翰从1号湖开始,但他可以在任 ...
- 百练,4103,踩方格
百练,4103,踩方格 普通做法:(也可以找规律) #include #include//要调用memset函数,头文件 using namespace std; int visited[50][50 ...
- 威佐夫博弈:百练OJ:1067:取石子游戏
威佐夫博弈(Wythoff's game):有两堆各若干个物品,两个人轮流从任一堆取至少一个或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜. 百练OJ:1067:取石子游戏 ...
- 百练OJ:4003:十六进制转十进制(python三行代码实现)
题目链接:百练OJ:4003 描述 将十六进制数转换成十进制数 输入 第一行有一个整数T,表示共有T组数据 接下来T行,每一行为一个16进制无符号正整数,位数不超过8位,数中的a-f均为大写字母,数前 ...
- 百练OJ:2742:统计字符数
题目链接: 百练OJ:2742:统计字符数 描述:判断一个由a-z这26个字符组成的字符串中哪个字符出现的次数最多 输入:第1行是测试数据的组数n,每组测试数据占1行,是一个由a-z这26个字符组成的 ...
最新文章
- Task04:青少年软件编程(Scratch)等级考试模拟卷(二级)
- 条件、循环、函数定义、字符串操作练习
- Hbase(3)——desc、alter、时间戳
- Bootstrap组件_进度条
- Parse Too complex in xxxx.cpp --------source insight
- linux之通过strings命令查看so里面是否包含****字符串
- Python使用秦九韶算法求解多项式的值
- Python包和__init__.py文件
- ios 进入后台 一段时间在进入前台 动画消失
- Spring 最常用的 7 大类注解,史上最强整理!
- 软考数据库系统工程师教材改版啦
- 计算机领域有哪些常见的比赛
- c语言中函数指针用法,C语言函数指针的用法
- 初学python100例-案例10 python兔子生兔子 多种不同解法 青少年python编程 少儿编程案例讲解
- 计算机的符号名称大全集,特殊符号大全
- linux ubuntu 五笔输入法,ubuntu下安装fcitx五笔输入法
- [bitcoin143@india.com].dharma 是什么东东
- Qt - QLabel设置字体颜色
- 欢迎报名2021年湖北省中小学电脑制作活动无人机编程赛项
- PHP 发送电子邮件