sicily 1007 To and Fro (基础题)

链接:http://soj.me/show_problem.php?pid=1007

Description

Mo and Larry have devised a way of encrypting messages. They first decide secretly on the number of columns and write the message (letters only) down the columns, padding with extra random letters so as to make a rectangular array of letters. For example, if
the message is "There‘s no place like home on a snowy night" and there are five columns, Mo would write down t o i o y h p k n n e l e a i r a h s g e c o n h s e m o t n l e w x Note that Mo includes only letters and writes them all in lower case. In this
example, Mo used the character `x‘ to pad the message out to make a rectangle, although he could have used any letter. Mo then sends the message to Larry by writing the letters in each row, alternating left-to-right and right-to-left. So, the above would be
encrypted as toioynnkpheleaigshareconhtomesnlewx Your job is to recover for Larry the original message (along with any extra padding letters) from the encrypted one.

Input

There will be multiple input sets. Input for each set will consist of two lines. The first line will contain an integer in the range 2 . ..20 indicating the number of columns used. The next line is a string of up to 200 lower case letters. The last input set
is followed by a line containing a single 0, indicating end of input.

Output

Each input set should generate one line of output, giving the original plaintext message, with no spaces.

Sample Input

 Copy sample input to clipboard

5
toioynnkpheleaigshareconhtomesnlewx
3
ttyohhieneesiaabss
0

Sample Output

theresnoplacelikehomeonasnowynightx
thisistheeasyoneab

解题思路:

按照加密的方式还原回去就可以了;

代码如下:

// Problem#: 1007
// Submission#: 2815109
// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
// URI: http://creativecommons.org/licenses/by-nc-sa/3.0/
// All Copyright reserved by Informatic Lab of Sun Yat-sen University
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#define MAXN 205
#define RST(N)memset(N, 0, sizeof(N))
using namespace std;

int columns;
char str[MAXN];
int len, cnt, temp, step;

void Init()
{
	scanf("%s", str);
	len = strlen(str);
	cnt = 0;
}

int main()
{
    while(~scanf("%d", &columns) && columns) {
	Init();
        for (int i=0, j=0; cnt<len; i++) {
            temp = 2*columns*i + j;
            if(temp < len) {
                putchar(str[temp]);
                cnt++;
            }else {
                i = -1;
                j++;
                continue;
            }
            temp = 2*columns*(i+1) - 1 - j;
            if (cnt < len && temp < len) {
                putchar(str[temp]);
                cnt++;
            }else {
                i = -1;
                j++;
            }
        }
        puts("");
    }
    return 0;
}                                 
时间: 2024-11-07 11:41:44

sicily 1007 To and Fro (基础题)的相关文章

1、基础题

基础题: 1.表单中 get与post提交方法的区别? 答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息. 2.session与cookie的区别? 答:session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_dir)的位置进行的存放 cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的. 两者都可通过时间来设置时间长短 3.数据

【HDU1232】畅通工程(并查集基础题)

裸敲并查集,很水一次AC 1 #include <iostream> 2 #include <cstring> 3 #include <cstdlib> 4 #include <cstdio> 5 #include <cctype> 6 #include <cmath> 7 #include <algorithm> 8 #include <numeric> 9 #include <string> 1

linux 基础题整理

基础题: 1.查看系统内核版本号及系统名称 2.查看smb服务所用的端口号 3.禁ping 4.查出22端口现在运行什么程序 5.登录提示符前的输出信息"you are welcome!!!" 6.成功登录后自动输出信息"距离全国比赛还剩1天!!!" 7.确认安全终端为tty1 8.取消普通用户的控制台访问的三个权限:reboot.halt.shutdown 9.只允许组ID为10的成员通过su命令改变为root用户 10.禁止Control-Alt-Delete键

一些DP基础题(1)

HDU 1024  Max Sum Plus Plus Now I think you have got an AC in Ignatius.L's "Max Sum" problem. To be a brave ACMer, we always challenge ourselves to more difficult problems. Now you are faced with a more difficult problem. Given a consecutive num

【坑】这些天刷基础题犯的诡异错误大集合

这些天刷基础题犯的诡(sha)异(bi)错误大集合 by pkl ———其中可能会有部分资料引用,引用会表明链接,如果没有标明敬请指出QAQ抱歉QAQ---------------------------------- 首先安利一发帖子:OI中有哪些常数优化的小技巧 ps:注意是基础题.所以嘛错误nc需要原谅..毕竟我也是蒟蒻QAQAQ大蒟蒻QAQ · 循环里的临时变量出了循环便无效· 递归的临时变量不要定成全局变量· 赋值的对象不要一不小心手抖写反了…比如b = a写成a = b[估计也只有我

nyist oj 36 最长公共子序列 (动态规划基础题)

最长公共子序列 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列. tip:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence).其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列. 输入 第一行给出一个整数N(0<N<100)表示待测数据组数 接

【HDU1102】Constructing Roads(MST基础题)

最小生成树水题.prim一次AC 1 #include <iostream> 2 #include <cstring> 3 #include <cstdlib> 4 #include <cstdio> 5 #include <cctype> 6 #include <cmath> 7 #include <algorithm> 8 #include <numeric> 9 10 #define typec int

类和对象基础题

一.           类和对象基础题 1.编写一个Java应用程序,该程序中有3个类:Ladder.Circle和主类A.具体要求如下:Ladder类具有类型为double的上底.下底.高.面积属性,具有返回面积的功能,包括一个构造方法对上底.下底.高进行初始化.Circle类具有类型为double的半径.周长和面积属性,具有返回周长.面积的功能,包括一个构造方法对半径进行初始化.主类A用来测试类Ladder和类Circle的功能. 2.按要求编写Java应用程序: (1)编写西游记人物类(

小试牛刀3之JavaScript基础题

JavaScript基础题 1.让用户输入两个数字,然后输出相加的结果. *prompt() 方法用于显示可提示用户进行输入的对话框. 语法: prompt(text,defaultText) 说明: 如果用户单击提示框的取消按钮,则返回 null.如果用户单击确认按钮,则返回输入字段当前显示的文本. 在用户点击确定按钮或取消按钮把对话框关闭之前,它将阻止用户对浏览器的所有输入.在调用 prompt() 时,将暂停对 JavaScript 代码的执行,在用户作出响应之前,不会执行下一条语句. *