1052. Self-Numbers

1052. Self-Numbers

暂无测试数据。

题目描述

在 1949 年印度数学家 D.R.Daprekar 发现了一类称作 Self-Numbers 的数。
对于每一个正整数 \(n\),
我们定义 \(d(n)\) 为 \(n\) 加上它每一位数字的和。
例如,d(75)=75+7+5=87。

给定任意正整数 \(n\) 作为一个起点,
都能构造出一个无限递增的序列:
n, d(n), d(d(n)), d(d(d(n))), . . .

例如,如果你从33开始,下一个数是33+3+3=39,
再下一个为 39+3+9=51,
再再下一个为 51+5+1=57,
因此你所产生的序列就像这样:
33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, . . .

数字 \(n\) 被称作 \(d(n)\) 的发生器。
在上面的这个序列中,
33 是 39 的发生器,39 是 51 的发生器,51 是 57 的发生器等等。
有一些数有超过一个发生器,
如 101 的发生器可以是 91 和 100。
一个没有发生器的数被称作 Self-Number。

如前 13 个 Self-Number 为 1, 3, 5, 7, 9, 20, 31, 42, 53, 64, 75, 86, 97。

我们将第 \(i\) 个 Self-Number 表示为 \(a[i]\),
所以, a[1]=1, a[2]=3, a[3]=5. . . 

输入

输入包含整数 \(N\)、\(K\)、\(s_1 \cdots s_k\),以空格和换行分割。

输出

在第一行你需要输出一个数,
这个数表示在闭区间 [1, N] 中 Self-Number的数量。
第二行必须包含以空格划分的 \(K\) 个数,
表示 \(a[s_1] \cdots a[s_k]\),
这里保证所有的 \(a[s_1] \cdots a[s_k]\) 都小于 \(N\)。
(例如,如果 \(N=100\),\(s_k\) 可以为 1-13,但不能为14,因为 \(a[14]=108>100\) ) 

样例输入

100 10
1 2 3 4 5 6 7 11 12 13

样例输出

13
1 3 5 7 9 20 31 75 86 97

数据范围限制

\(1 \leq N \leq 10^7\),\(1 \leq K \leq 5000\)

来源

入门篇练习5.6.2

信息

ID
1051
难度
(无)
分类
(无)
标签
(无)
递交数
0
已通过
0
通过率
?
上传者