分析

直接贪心,没有什么思维难度。主要是考虑到贪心的选取更少的元素。那么元素个数为 其中 。那么考虑 如果分解完后 仍然这一位有 ,那么

代码

#include<bits/stdc++.h>
using namespace std;
int a[100],n,L,Ans;
int ksm(int a,int b){
    int x=1;for(;b;b>>=1,a=a*a)if(b&1)x=x*a;return x;
}
int main() {
    cin>>n;
    while(n){a[++L]=n%10;n/=10;}
    for(int i=1;i<=L;i++)Ans=max(a[i],Ans);printf("%d\n",Ans);
    for(int i=1;i<=Ans;i++){
        int x=0;
        for(int i=1;i<=L;i++){
            if(a[i])x+=ksm(10,i-1),a[i]--;
        }
        printf("%d ",x);
    }
}