整位数(numbers)
题目描述
如果一个正整数除最高位以外,其余数位全都是 0,那么这个数被称为 整位数 。
例如,下面这些数都是整位数:
4000, 1, 9, 800, 90
而下面这些数不是整位数:
110, 707, 222, 1001
现在给定一个正整数 n,请你把它拆成若干个整位数之和,并且要求使用的整位数个数尽可能少。
例如:
5009=5000+9
所以可以拆成 2 个整位数。
输入格式
第一行包含一个整数 t,表示测试用例数量。
接下来 t 行,每行包含一个正整数 n。
输出格式
对于每个测试用例,输出两行。
第一行输出一个整数 k,表示拆分出的整位数个数。
第二行输出 k 个整位数,表示一种合法拆分方案。
为了保证答案唯一,要求输出的 k 个整位数 按照数值从大到小排列 。
输入输出样例 #1
输入 #1
5
5009
7
9876
10000
10
输出 #1
2
5000 9
1
7
4
9000 800 70 6
1
10000
1
10
样例解释 #1
对于第 1 组数据:
5009=5000+9
因此最少需要 2 个整位数。
对于第 2 组数据:
7
本身就是整位数,因此最少需要 1 个整位数。
对于第 3 组数据:
9876=9000+800+70+6
因此最少需要 4 个整位数,并且需要按照从大到小的顺序输出。
对于第 4 组数据:
10000
本身就是整位数,因此最少需要 1 个整位数。
对于第 5 组数据:
10
本身就是整位数,因此最少需要 1 个整位数。
数据范围与约定
对于所有测试数据,保证:
1≤t≤104,1≤n≤104
| 测试点 |
分值 |
t |
n |
特殊性质 |
| 1∼2 |
10 |
≤20 |
≤100 |
无 |
| 3∼4 |
≤100 |
≤104 |
A |
| 5∼6 |
B |
| 7∼10 |
20 |
≤1000 |
无 |
| 11∼15 |
25 |
≤5000 |
| 16∼20 |
≤104 |
特殊性质 A:保证 n 本身是整位数。
特殊性质 B:保证 n 的十进制表示中至少包含一个数字 0。