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]);
}