Codeforces Gym 101164 D.Reading Digits(シミュレーション)

1687 ワード

に言及


符号化方式は、encodes"1211"as:"one of one,one of two,two of one",or,more precisely:"111221"と定義.
二次符号化は、encoding of"111221"string is:"312211"である.
符号化される文字列が同じ文字で10文字以上接続されていないことを保証します.
k回の符号化後の文字列を与えて、元の列のposビットの文字を求めます

問題を解く構想.


毎回符号化されたシリアル長が分からないのでstringを用いる.復号化プロセスを簡単にシミュレートします.

コード#コード#

#include 
using namespace std;
int k, pos;
string src, decode;
int main()
{
    scanf("%d %d", &k, &pos);
    cin>>src;
    for(int i=k;i;i--)
    {
        decode = "";
        for(int idx=0, repeat, num;idx2)
        {
            repeat = src[idx]-'0',  num = src[idx+1];
            decode += string(repeat, char(num));
        }
        src = decode;
    }
    printf("%c
"
, src[pos]); }