zoukankan      html  css  js  c++  java
  • Codeforces Round #528-A. Right-Left Cipher(字符串模拟)

    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;
    }
  • 相关阅读:
    【转】依赖注入那些事儿
    【转】Visual Studio單元測試小應用-測執行時間
    【转】 代码设计敏捷开发三部曲
    【转】 c#中两个DateTimePicker,一个时间设置为0:0:0,另一个设置为23:59:59
    【转】 C#获取当前程序运行路径的方法集合
    CSVHelper读出乱码 解决方案
    CvsHelper 使用指南
    【转】 C# ListView实例:文件图标显示
    【转】C# winform 加载网页 模拟键盘输入自动接入访问网络
    基于MHA的MySQL高可用
  • 原文地址:https://www.cnblogs.com/Staceyacm/p/10781868.html
Copyright © 2011-2022 走看看