题目大意:

给你一个数 n ,让你用一类数的和来表示它,这些数要满足条件,只由0和1组成,问你最少需要多少个这类数才能表示这个 n 。

代码:

#include<iostream>
#include<stdio.h>

using namespace std;

int n;
int a[10]={0};
int m=0;
int main()
{
    scanf("%d",&n);
    while(n>0)
    {
        a[m]=n%10;
        m++;
        n=n/10;
    }
    m--;
    int max=0;
    for(int i=0;i<=m;i++)
    {
        if(max<a[i])max=a[i];
    }
    printf("%d\n",max);
    for(int i=1;i<=max;i++)
    {
        int flag=0;
        for(int j=m;j>=0;j--)
        {
            if(a[j]>0&&i!=1)a[j]--;
            if(a[j]>0)flag=1;
            if(flag==1)
            {
                if(a[j]==0)cout<<"0";
                else cout<<"1";
            }
        }
        cout<<" ";
    }
}