CF1104A.Splitting into digits

传统题 时间 2000 ms 内存 256 MiB 3 尝试 1 已通过 1 标签

Splitting into digits

题目描述

Vasya 有一个他最喜欢的数字 nn。他想要将 nn 拆分成若干个非零数字。也就是说,他想选择一些数字 d1,d2,,dkd_1, d_2, \ldots, d_k,使得对于所有 ii 都有 1di91 \leq d_i \leq 9,并且 d1+d2++dk=nd_1 + d_2 + \ldots + d_k = n

Vasya 追求美感,因此他希望找到一种方案,使得 d1,d2,,dkd_1, d_2, \ldots, d_k 中不同数字的数量尽可能少。请你帮帮他!

输入格式

第一行包含一个整数 nn,表示 Vasya 想要拆分的数字(1n10001 \leq n \leq 1000)。

输出格式

第一行输出一个整数 kk,表示拆分后数字的个数。注意 kk 必须满足 1kn1 \leq k \leq n
第二行输出 kk 个数字 d1,d2,,dkd_1, d_2, \ldots, d_k,用空格分隔。所有数字都必须满足 1di91 \leq d_i \leq 9

你需要找到一种拆分方式,使得 d1,d2,,dkd_1, d_2, \ldots, d_k 中不同数字的数量在所有拆分方案中最少。在所有满足条件的拆分方案中,输出任意一种即可。保证至少存在一种将 nn 拆分为若干数字的方案。

说明/提示

在第一个测试中,数字 11 可以被拆分为 11 个数字 11

在第二个测试中,将数字 44 拆分为数字的方案中,不同数字数量为 11 的有 33 种,分别为 [1,1,1,1][1, 1, 1, 1][2,2][2, 2][4][4]。这些方案都可以输出。例如,将 44 拆分为 [1,1,2][1, 1, 2] 就不是答案,因为它包含了 22 个不同的数字,这不是最少的。

由 ChatGPT 4.1 翻译

样例

1
1
1 
4
2
2 2
27
3
9 9 9

在线编程 IDE

建议全屏模式获得最佳体验