1352A. Sum of Round Numbers
如果正整数(严格大于零)的格式为 d0 00000,则称为 round. 换言之,如果正整数除最左边(最有效)以外的所有数字都等于零,则正整数为round。特别是,所有来自1自9(含)是圆形的。
例如,以下数字为round:4000,1,9,800,90.以下数字不是round的:110,707,222,1001.
你会得到一个正整数n (1≤n≤10^4).表示数字n作为使用最小总和(加法)数的整数之和。换句话说,您需要表示给定的数字n作为最少项数的总和,每个项都是一个整数。
输入
第一行包含一个整数t (1≤t≤10^4) — 输入中的测试用例数。然后t个测试用例如下。
每个测试用例都是一行包含整数n(1≤n≤10^4).
输出
打印t个测试用例的答案。每个答案必须以整数k开头— 最小求和数。下面k项必须遵循,每个项都是一个整数,它们的总和 是n.这些条款可以按任何顺序打印。如果有多个答案,请打印其中任何一个。
例
输入
5
5009
7
9876
10000
10
输出
2
5000 9
1
7
4
800 70 6 9000
1
10000
1
10
解决方法:
// codeforces
// 1352A. Sum of Round Numbers
# include<iostream>
# include<cstring>
using namespace std;
int main()
{
int n;
cin >> n;
for(int i = 0; i < n; i++)
{
string a;
cin >> a;
int t = 0;
for(int j = 0; j < a.length(); j++)
{
if(a[j] != '0') t++;
}
cout << t << endl;
for(int j = 0; j < a.length(); j++)
{
if(a[j] != '0')
{
cout << a[j] ;
for(int m = 0; m < a.length()-j-1; m++)
{
cout << 0;
}
cout << " ";
}
}
}
return 0;
}