#P16635. [Ukiepc2020]Bidirectional Code
[Ukiepc2020]Bidirectional Code
题目描述
在地球与卫星之间进行太空通信时,不能像使用 4G 蜂窝通信那样直接传输消息。由于信号传播距离极长,消息可能受到噪声干扰而发生失真。
多年来,研究人员通过加入冗余数据来解决这一问题。这样一来,接收方就能够检测收到的数据是否出错;若发现错误,可以要求发送方重新发送,或者在错误较小时直接恢复原始消息。这一研究领域称为编码理论。
我们设计了一种新的冗余编码系统。为了发送一个整数,只需要把它表示成若干个回文数之和,再像平常一样逐个发送这些回文数。接收方可以检查收到的每个数是否为回文数;如果某个数不是回文数,就说明传输过程中发生了错误。
一个整数的十进制表示从左向右读与从右向左读完全相同,则称它为回文数。
为了保证通信效率,一个整数最多只能被拆分成 个回文数之和。
给定整数 ,请构造一种分解方式,将 表示成不超过 个回文数之和。
注:已有研究证明,每个正整数都可以表示成三个回文数之和;但你不需要将项数最小化。
输入格式
输入仅一行,包含一个整数 :
输出格式
第一行输出一个整数 ,表示使用的回文数数量,必须满足:
接下来输出 行,每行包含一个回文数。
这些回文数之和必须恰好等于 。
如果存在多种合法答案,可以输出任意一种。
样例 1
输入
1100000
输出
2
645546
454454
样例 2
输入
1000
输出
5
1
99
1
898
1