应该是纯模拟吧。
直接输入一个字符串,然后一位一位看,如果不是0,就 k++
,并计算这个数的真实的值,最后输出就行了。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#define line cout << endl
using namespace std;
int t, k, sum = 1/*位数*/, a[10], cnt;
char n[10];
int main() {
cin >> t;//T组数据
for (int T = 1; T <= t; T++) {
cin >> n;
int len = strlen(n);
for (int i = len - 1; i >= 0; i--) {
if (n[i] != '0') {//如果这一位不是0
k++;//总数++
a[++cnt] = (n[i] - '0') * sum;//算一下这一位真实的值
}
sum *= 10;//位数++
}
cout << k;
line;
for (int i = 1; i <= cnt; i++) {
cout << a[i] << " ";
}
line;
k = 0;//初始化
sum = 1;//初始化
memset(a, 0, sizeof(a));//初始化
cnt = 0;//初始化
}
return 0;
}