fork(1) download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int countdig(int n)
  4. {
  5. int c=0;
  6. while(n)
  7. {
  8. c++;n/=10;
  9. }
  10. return c;
  11. }
  12. int s[10][1000]={0};
  13. int p[1000009]={0},v=0;
  14. bool cmp(int a,int b)
  15. {
  16. return a>b;
  17. }
  18. void init()
  19. {
  20. for(int i=1;i<=7;i++)
  21. {
  22. int mul=1,j=2,p,k;
  23. while(j<=i)mul*=10,j++;
  24. s[i][0]=mul;//cout<<mul<<" ";
  25. k=1;
  26. p=i-1;
  27. bool h[1200009]={0};
  28. while(p>0){
  29. for(int j=0;j< (1<<(p-1)) ;j++)
  30. {
  31. if(h[mul+s[p][j]]==0)
  32. {
  33. h[mul+s[p][j]]=1;
  34. s[i][k++]=mul+s[p][j];
  35. // cout<<s[i][k-1]<<" ";
  36. }
  37. }
  38. p--;
  39. }
  40. sort(s[i],s[i]+(1<<(i-1)),cmp);
  41. // cout<<endl;
  42. }
  43. }
  44.  
  45. int main()
  46. {
  47. init();
  48. int n,res=0;
  49. cin>>n;
  50. if(n==0)cout<<"0"<<endl;
  51. while(n)
  52. {
  53. int i=0,t,c=countdig(n);
  54. while(countdig(n)==c)
  55. {
  56. // cout<<"n="<<n<<" c="<<c<<" s[c][i]="<<s[c][i];//<<endl;
  57. t=n/s[c][i];
  58. // cout<<" t="<<t<<endl;
  59. if(t>0)
  60. {
  61. res+=t;
  62. for(int j=0;j<t;j++)
  63. p[v++]=s[c][i];
  64. }
  65. // i++;
  66. // cout<<"n="<<n<<endl;
  67. n-=t*s[c][i];//i++;
  68. // cout<<"n="<<n<<endl;
  69. i++;
  70. }
  71. }
  72. cout<<res<<endl;
  73. for(int i=0;i<v;i++)cout<<p[i]<<" ";cout<<endl;
  74. return 0;
  75. }
Success #stdin #stdout 0s 8148KB
stdin
999997
stdout
17
111111 111111 111111 111111 111111 111111 111111 111111 111101 1 1 1 1 1 1 1 1