我的解法非常暴力

开10个的数组

因为最多只有9个数去构造

因为对于某一位来说,等于几就需要几个1来构造

#include <bits/stdc++.h>
using namespace std;
bool a[10][1000009];
int n,top;
int main()
{
    char x;
    while( cin >> x )
    {
        x-='0'; ++n;
        for(int j=1;j<=top;j++)
            a[j][n]=(j<=x?1:0);
        if( x>top )
            for(int j=top+1;j<=x;j++)    a[++top][n]=1;
    }
    cout << top << endl;
    for(int i=1;i<=top;i++)
    {
        int ok=0;
        for(int j=1;j<=n;j++)
            if( ok )    printf("%d",a[i][j]);
            else if( a[i][j] )    printf("%d",a[i][j]),ok=1;
        cout << " ";
    }
}