百练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/

网上的方法有些繁琐,这里给了一个简单的

时间: 2024-10-30 22:48:37

百练1041-反反复复-2016正式C题的相关文章

百练8216-分段函数-2016正式A题

百练 / 2016计算机学科夏令营上机考试 已经结束 题目 排名 状态 统计 提问 A:分段函数 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 编写程序,计算下列分段函数y=f(x)的值. y=-x+2.5; 0 <= x < 5 y=2-1.5(x-3)(x-3); 5 <= x < 10 y=x/2-1.5; 10 <= x < 20 输入 一个浮点数N,0 <= N < 20 输出 输出N对应的分段函数值:f

百练6255-单词反转-2016正式B题

百练 / 2016计算机学科夏令营上机考试 已经结束 题目 排名 状态 统计 提问 B:单词翻转 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 输入一个句子(一行),将句子中的每一个单词翻转后输出. 输入 只有一行,为一个字符串,不超过500个字符.单词之间以空格隔开. 输出 翻转每一个单词后的字符串,单词之间的空格需与原文一致. 样例输入 hello world 样例输出 olleh dlrow 1 #include <iostream> 2 #i

poj 百练 2765 八进制小数(精度问题)

2765:八进制小数 查看 提交 统计 提示 提问 总时间限制:  1000ms  内存限制:  65536kB 描述 八进制小数可以用十进制小数精确的表示.比如,八进制里面的0.75等于十进制里面的0.963125 (7/8 + 5/64).所有小数点后位数为n的八进制小数都可以表示成小数点后位数不多于3n的十进制小数. 你的任务是写一个程序,把(0, 1)中的八进制小数转化成十进制小数. 输入 输入包括若干八进制小数,每个小数占用一行.每个小数的形式是0.d1d2d3 ... dk,这里di

[OpenJudge] 百练2754 八皇后

八皇后 Description 会下国际象棋的人都很清楚:皇后可以在横.竖.斜线上不限步数地吃掉其他棋子.如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题. 对于某个满足要求的8皇后的摆放方法,定义一个皇后串a与之对应,即a=b1b2...b8,其中bi为相应摆法中第i行皇后所处的列数.已经知道8皇后问题一共有92组解(即92个不同的皇后串).给出一个数b,要求输出第b个串.串的比较是这样的:皇后串x置于皇后串y之前,当且仅当将x视为整数时比y小. I

Windows Server 2016 正式版安装教程

微软今天正式发布了Windows Server 2016,它可以理解为服务器版的Windows 10,宣告整个核心架构定型稳定.实际上,上月末,微软就已经面向大客户OEM伙伴分发了Windows Server 2016正式版ISO镜像,现在则是全面开放下载使用. Windows Server 2016似乎是对这个平台之前版本的一次体面的升级,围绕着软件定义存储.网络和虚拟化引入了新的功能,帮助企业打造更强大.更灵活的IT基础架构.Windows Server 2016带来了大量新功能,包括引入新

SQL Server 2016正式版安装(超多图)

微软数据库SQL Server 2016正式版在2016年6月就发布,由于近期工作忙,一直拖到现在才有时间把安装过程写到博客上,分享给大家.本人一直习惯使用英文版,所以版本和截图都是英文版的.废话少说,转入正题. 下载地址: https://www.microsoft.com/en-us/server-cloud/products/sql-server-2016/或者到http://www.itellyou.cn/下载. KB2919442下载地址:https://www.microsoft.c

Windows Server 2016正式版14393英文版ISO镜像下载:_X64FRE_ZH-CN.ISO

http://care.dlservice.microsoft.com/dl/download/F/8/3/F83C7D26-787A-4F43-82B0-7C7BF8A12791/14393.0.160715-1616.RS1_RELEASE_SERVER_EVAL_X64FRE_ZH-CN.ISO Windows Server 2016正式版14393英文版ISO镜像下载:下载

ACM/ICPC 之 递归(POJ2663-完全覆盖+POJ1057(百练2775)-旧式文件结构图)

POJ2663-完全覆盖 题解见首注释 //简单递推-三个米诺牌(3*2)为一个单位打草稿得出规律 //题意-3*n块方格能被1*2的米诺牌以多少种情况完全覆盖 //Memory 132K Time: 0 Ms #include<iostream> #include<cstring> #include<cstdio> using namespace std; int ans; //开始平铺 int Tiling(int n) { int sum = 0; if (n =

百练 1088 滑雪

“人人为我”的解法: dp[i][j]表示坐标为(i,j)的点开始下滑的最大长度. 则dp[i][j]为(i,j)周围四个点中比(i,j)低,且最大长度最大再加一的值 用结构体来储存一个点的坐标和高度,这样按高度从小到大排完序以后还不会丢失坐标的值 从小到大遍历所有的点,经过一个点(i,j)时,用递推公式求L(i,j). 一个小技巧: 将矩阵height四周的值赋值为INF,你可以想想这是滑雪场四周非常非常高的围墙. 这样就避免了数组越界的判断,而且不会影响正确结果(因为我们找的是滑雪场内部的最