Decoding CodeForces - 746B

Polycarp is mad about coding, that is why he writes Sveta encoded messages. He calls the median letter in a word the letter which is in the middle of the word. If the word's length is even, the median letter is the left of the two middle letters. In the following examples, the median letter is highlighted: contestinfo. If the word consists of single letter, then according to above definition this letter is the median letter.

Polycarp encodes each word in the following way: he writes down the median letter of the word, then deletes it and repeats the process until there are no letters left. For example, he encodes the word volga as logva.

You are given an encoding s of some word, your task is to decode it.

Input

The first line contains a positive integer n (1 ≤ n ≤ 2000) — the length of the encoded word.

The second line contains the string s of length n consisting of lowercase English letters — the encoding.

Output

Print the word that Polycarp encoded.

Example
Input
5
logva
Output
volga
Input
2
no
Output
no
Input
4
abba
Output
baba
Note

In the first example Polycarp encoded the word volga. At first, he wrote down the letter l from the position 3, after that his word looked like voga. After that Polycarp wrote down the letter o from the position 2, his word became vga. Then Polycarp wrote down the letter g which was at the second position, the word becameva. Then he wrote down the letter v, then the letter a. Thus, the encoding looked like logva.

In the second example Polycarp encoded the word no. He wrote down the letter n, the word became o, and he wrote down the letter o. Thus, in this example, the word and its encoding are the same.

In the third example Polycarp encoded the word baba. At first, he wrote down the letter a, which was at the position 2, after that the word looked like bba. Then he wrote down the letter b, which was at the position 2, his word looked like ba. After that he wrote down the letter b, which was at the position 1, the word looked likea, and he wrote down that letter a. Thus, the encoding is abba.

题意:上面说了这么多,其实意思就是给你n个字母,这些字母是怎么来的呢:假设字母的个数是奇数,从最中间拿出来放到另一组的最前面,并且这个数从原来的哪一组中删除,这样一来,奇数个组变成了偶数组,然后再取,偶数个是从中间靠左的取,然后再放入另个组中的第二个位置,从原组删除,以此类推。

最后得到的是题目中input的那个数据,问:没经过变化的原来的是啥?


分析:多些几组数据找找规律,so easy!

写个a,b,c,d,e奇数的得出cbdae,从右开始读a,b,c……观察他的位置,每次位置移动+=2;详情看代码

#include <cstdio>
#include <algorithm>
#include <iostream>
#include <queue>
#include <string.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    char a[6010];
    memset(a,0,sizeof(a));
    cin>>a;
    if(n%2==0)
    {
        for(int i=n-2;i>=0;i-=2)
            printf("%c",a[i]);
        for(int j=1;j<=n-1;j+=2)
           printf("%c",a[j]);

    }
    else
    {
        for(int i=n-2;i>=1;i-=2)
            printf("%c",a[i]);
        for(int j=0;j<=n-1;j+=2)
            printf("%c",a[j]);
    }
    return 0;
}

多说一点:注意一开始的数组初始化,很重要,要不会打出好多乱七八糟的东西


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值