首页 > 试题广场 >

字符串解密

[编程题]字符串解密
  • 热度指数:1014 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}给定一个由字符 \texttt{`0'}\texttt{`1'} 构成的字符串 s。我们从字符串开头开始,按照长度依次取出以下子串并解析为十进制数:
\hspace{23pt}\bullet\, 长度 1 的子串;
\hspace{23pt}\bullet\, 长度 2 的子串;
\hspace{23pt}\bullet\, 长度 3 的子串;
\hspace{23pt}\bullet\, …;
\hspace{23pt}\bullet\, 长度 10 的子串;
\hspace{23pt}\bullet\, 然后循环回长度 1,依此类推;
\hspace{15pt}子串被取走后,视为删除,下一次从剩余的字符串中继续取子串,直到剩余字符不足以组成当前长度的子串。
\hspace{15pt}请输出解析得到的十进制数字序列。

输入描述:
\hspace{15pt}在一行上输入一个长度为 1\leqq {\rm len}(s) \leqq 10^{5},由字符 \texttt{`0'}\texttt{`1'} 构成的字符串 s


输出描述:
\hspace{15pt}第一行输出一个整数 p,表示解析得到的数字个数; 
\hspace{15pt}第二行输出 p 个整数,表示所有解析出的十进制数字,数字之间用空格隔开。
示例1

输入

0101001001010

输出

4
0 2 4 9

说明

\hspace{15pt}在这组样例中,s=\texttt{,依次切分并解析如下: 
\hspace{23pt}\bullet\, 长度 1 的子串 \texttt{ 转换为 0
\hspace{23pt}\bullet\, 长度 2 的子串 \texttt{ 转换为 2
\hspace{23pt}\bullet\, 长度 3 的子串 \texttt{ 转换为 4
\hspace{23pt}\bullet\, 长度 4 的子串 \texttt{ 转换为 9
\hspace{15pt}此后剩余字符长度不足以组成长度 5 的子串,故舍弃。
\hspace{15pt}因此总共解析得到 4 个数字,分别为 0,2,4,9
示例2

输入

100

输出

2
1 0

这道题你会答吗?花几分钟告诉大家答案吧!