Codeforces Round #528-A. Right-Left Cipher(字符串模拟)

本文介绍了一种名为Right-Left的密码加密方法,并提供了解密算法的具体实现。通过模拟字符串的奇偶位置,可以有效地从加密后的字符串中恢复原始信息。

time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

Polycarp loves ciphers. He has invented his own cipher called Right-Left.

Right-Left cipher is used for strings. To encrypt the string s=s1s2…sns=s1s2…sn Polycarp uses the following algorithm:

  • he writes down s1s1,
  • he appends the current word with s2s2 (i.e. writes down s2s2 to the right of the current result),
  • he prepends the current word with s3s3 (i.e. writes down s3s3 to the left of the current result),
  • he appends the current word with s4s4 (i.e. writes down s4s4 to the right of the current result),
  • he prepends the current word with s5s5 (i.e. writes down s5s5 to the left of the current result),
  • and so on for each position until the end of ss.

For example, if ss="techno" the process is: "t" →→ "te" →→ "cte" →→ "cteh" →→ "ncteh" →→ "ncteho". So the encrypted ss="techno" is "ncteho".

Given string tt — the result of encryption of some string ss. Your task is to decrypt it, i.e. find the string ss.

Input

The only line of the input contains tt — the result of encryption of some string ss. It contains only lowercase Latin letters. The length of tt is between 11 and 5050, inclusive.

Output

Print such string ss that after encryption it equals tt.

Examples

input

Copy

ncteho

output

Copy

techno

input

Copy

erfdcoeocs

output

Copy

codeforces

input

Copy

z

output

Copy

z

分一下字符串的奇偶模拟即可,注意要用char 不要用string

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>

using namespace std;

int main() {

	char str[10005],str1[10005];
	scanf("%s",str);
	int len=strlen(str);
	int s=0;
	if(len%2==0) {

		for(int t=len/2-1; t>=0; t--) {
			str1[s++]=str[t];
			str1[s++]=str[len-1-t];
		}
	} else {
		str1[s++]=str[len/2];
		for(int t=len/2-1; t>=0; t--) {
			str1[s++]=str[len-1-t];
			str1[s++]=str[t];
		}
	}
	for(int t=0; t<s; t++) {
		cout<<str1[t];
	}
	return 0;
}

 

转载于:https://www.cnblogs.com/Staceyacm/p/10781868.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值