在地球与卫星之间的空间通信中,我们无法像使用 4G 等蜂窝通信那样简单地传输信息。由于信号传输的距离极远,信息可能会受到噪声的干扰。
多年来,研究人员已经找到了绕过这一问题的方法,其核心在于引入冗余数据。这为接收方提供了一种检测接收到的数据是否包含错误的方法,如果发现错误,接收方可以要求发送方重新传输信息,或者在错误较小时直接恢复原始信息。这一研究领域被称为编码理论(Coding Theory)。
代尔夫特理工大学空间研究所(TU Delft Space Institute)邀请你研究一种新的数字传输方式,以便更容易地观察到错误。其构想如下:给定一个数字 $n$,将其写成若干个“平衡数”之和。我们称一个非负整数为“平衡数”,如果它在十进制表示下是一个回文数,即从左向右读和从右向左读的数字序列相同。为了发送一个数字,你只需找到一种将其表示为平衡数之和的方法,并像往常一样发送每个平衡数。接收方现在可以检查它接收到的数字是否为平衡数,如果不是,则说明发生了错误。
为了保持通信效率,研究所增加了一个限制:一个数字最多只能分解为 10 个平衡数之和。现在,请你编写一个程序,将一个数字分解为平衡数之和。^1
输入格式
输入包含:
- 一行,包含一个整数 $n$ ($1 \le n < 10^{18}$),即你想要写成平衡数之和的数字。
输出格式
输出一行,包含一个整数 $1 \le k \le 10$,表示你所需的平衡数个数,随后输出 $k$ 行,每行包含一个你要发送的平衡数。
如果存在多种可能的解,你可以输出其中任意一种。
样例
样例输入 1
1100000
样例输出 1
2 645546 454454
样例输入 2
1000
样例输出 2
5 1 99 1 898 1
CC BY-SA 3.0 IGO,由欧洲航天局在维基共享资源上提供,已编辑