分析
易证:对于一个位置上的1来说,直接消除,绝对比进位消除优(显然
所以我们只需要每次贪心消去非零位上的一个1即可
代码
//20zr 18 day4 C
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#define LL long long
#define Cl(X,Y) memset((X),(Y),sizeof(X))
#define FOR(i,A,B) for(int i=A;i<=B;i++)
#define BOR(i,A,B) for(int i=A;i>=B;i--)
#define Lowbit(X) (X & (-X))
#define Skip cout<<endl;
#define INF 0x3f3f3f3f
#define Mod 998244353
#define Rson (X<<1|1)
#define Lson (X<<1)
using namespace std;
const int MaxN=1e6+10;
int Total,Num[MaxN],Cnt,Ans,Temp[11];
char Res[11][MaxN];
inline void File() {
freopen(".in","r",stdin);
freopen(".out","w",stdout);
}
int main() {
// File();
// ios::sync_with_stdio(false);
scanf("%d",&Total);
while(Total) { Num[++Cnt]=Total%10; Total/=10; }
FOR(i,0,9) {
bool Jud=false,Sta=false;
BOR(j,Cnt,1) {
if(Num[j]) { Res[i][++Temp[i]]='1'; Num[j]--; Jud |= true; Sta=true; }
else { if(Sta) { Res[i][++Temp[i]]='0'; } }
}
if(Jud) { Ans++; }
}
cout<<Ans<<endl;
FOR(i,0,Ans-1) {
FOR(j,1,Temp[i]) { printf("%c",Res[i][j]); }
cout<<" ";
}
// fclose(stdin);
// fclose(stdout);
system("pause");
return 0;
} 
京公网安备 11010502036488号