# Print numbers with digits 0 and 1 only such that their sum is N

Given a number N, the task is to find the required numbers consist of only 0 and 1 digit whose sum is equal to N.**Example:**

Input:9Output:1 1 1 1 1 1 1 1 1 Only numbers smaller than or equal to 9 with digits 0 and 1 only are 0 and 1 itself. So to get 9, we have to add 1 - 9 times.Input:31Output:11 10 10

**Approach:**

- Initialize product p to 1 and m to zero.
- Create the vector that stores the resultant integer counts of 0s and 1s.
- Loop for N and check if N is multiple of 10 if yes get the decimal and update p by multiplying 10 and store this value in a vector and decrease N by m do this for each decimal and print the total size of vector.
- Finally traverse the vector and print the elements.

Below is the implementation of the above approach.

## C++

`// C++ implementation of the above approach` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to count the numbers` `int` `findNumbers(` `int` `N)` `{` ` ` `// Initialize vector array that store` ` ` `// result.` ` ` `vector<` `int` `> v;` ` ` `// Get the each decimal and find its` ` ` `// count store in vector.` ` ` `while` `(N) {` ` ` `int` `n = N, m = 0, p = 1;` ` ` `while` `(n) {` ` ` `// find decimal` ` ` `if` `(n % 10)` ` ` `m += p;` ` ` `n /= 10;` ` ` `p *= 10;` ` ` `}` ` ` `v.push_back(m);` ` ` `// Decrement N by m for each decimal` ` ` `N -= m;` ` ` `}` ` ` `// Loop for each element of vector` ` ` `// And print its content.` ` ` `for` `(` `int` `i = 0; i < v.size(); i++)` ` ` `cout << ` `" "` `<< v[i];` ` ` `return` `0;` `}` `// Driver code` `int` `main()` `{` ` ` `int` `N = 31;` ` ` `findNumbers(N);` ` ` `return` `0;` `}` |

## Java

`// Java implementation of the above approach` `import` `java.util.*;` `public` `class` `GfG{` ` ` `// Function to count the numbers` ` ` `public` `static` `int` `findNumbers(` `int` `N)` ` ` `{` ` ` `// Initialize vector array that store` ` ` `// result.` ` ` `ArrayList<Integer> v = ` `new` `ArrayList<Integer>();` ` ` ` ` `// Get the each decimal and find its` ` ` `// count store in vector.` ` ` `while` `(N > ` `0` `) {` ` ` ` ` `int` `n = N, m = ` `0` `, p = ` `1` `;` ` ` `while` `(n > ` `0` `) {` ` ` ` ` `// find decimal` ` ` `if` `(n % ` `10` `!= ` `0` `)` ` ` `m += p;` ` ` ` ` `n /= ` `10` `;` ` ` `p *= ` `10` `;` ` ` `}` ` ` ` ` `v.add(m);` ` ` ` ` `// Decrement N by m for each decimal` ` ` `N -= m;` ` ` `}` ` ` ` ` `// Loop for each element of vector` ` ` `// And print its content.` ` ` `for` `(` `int` `i = ` `0` `; i < v.size(); i++)` ` ` `System.out.print(` `" "` `+ v.get(i));` ` ` ` ` `return` `0` `;` ` ` `}` ` ` `public` `static` `void` `main(String []args){` ` ` ` ` `int` `N = ` `31` `;` ` ` `findNumbers(N);` ` ` `}` `}` `// This code is contributed by Rituraj Jain` |

## Python3

`# Python 3 implementation of` `# the above approach` `# Function to count the numbers` `def` `findNumbers(N) :` ` ` `# Initialize vector array that` ` ` `# store result.` ` ` `v ` `=` `[];` ` ` `# Get the each decimal and find` ` ` `# its count store in vector.` ` ` `while` `(N) :` ` ` `n, m, p ` `=` `N, ` `0` `, ` `1` ` ` `while` `(n) :` ` ` `# find decimal` ` ` `if` `(n ` `%` `10` `) :` ` ` `m ` `+` `=` `p` ` ` `n ` `/` `/` `=` `10` ` ` `p ` `*` `=` `10` ` ` `v.append(m);` ` ` `# Decrement N by m for` ` ` `# each decimal` ` ` `N ` `-` `=` `m` ` ` `# Loop for each element of vector` ` ` `# And print its content.` ` ` `for` `i ` `in` `range` `(` `len` `(v)) :` ` ` `print` `(v[i], end ` `=` `" "` `)` `# Driver Code` `if` `__name__ ` `=` `=` `"__main__"` `:` ` ` ` ` `N ` `=` `31` ` ` `findNumbers(N)` `# This code is contributed by Ryuga` |

## C#

`// C# implementation of the above approach` `using` `System;` `using` `System.Collections;` `class` `GfG` `{` ` ` `// Function to count the numbers` ` ` `public` `static` `int` `findNumbers(` `int` `N)` ` ` `{` ` ` `// Initialize vector array that store` ` ` `// result.` ` ` `ArrayList v = ` `new` `ArrayList();` ` ` ` ` `// Get the each decimal and find its` ` ` `// count store in vector.` ` ` `while` `(N > 0)` ` ` `{` ` ` `int` `n = N, m = 0, p = 1;` ` ` `while` `(n > 0)` ` ` `{` ` ` ` ` `// find decimal` ` ` `if` `(n % 10 != 0)` ` ` `m += p;` ` ` ` ` `n /= 10;` ` ` `p *= 10;` ` ` `}` ` ` `v.Add(m);` ` ` ` ` `// Decrement N by m for each decimal` ` ` `N -= m;` ` ` `}` ` ` ` ` `// Loop for each element of vector` ` ` `// And print its content.` ` ` `for` `(` `int` `i = 0; i < v.Count; i++)` ` ` `Console.Write(` `" "` `+ v[i]);` ` ` ` ` `return` `0;` ` ` `}` ` ` ` ` `// Driver code` ` ` `public` `static` `void` `Main()` ` ` `{` ` ` `int` `N = 31;` ` ` `findNumbers(N);` ` ` `}` `}` `// This code is contributed by PrinciRaj1992` |

## PHP

`<?php` `// PHP implementation of the` `// above approach` `// Function to count the numbers` `function` `findNumbers(` `$N` `)` `{` ` ` `// Initialize vector array` ` ` `// that store result.` ` ` `$v` `= ` `array` `();` ` ` `// Get the each decimal and find` ` ` `// its count store in vector.` ` ` `while` `(` `$N` `)` ` ` `{` ` ` `$n` `= ` `$N` `;` ` ` `$m` `= 0;` ` ` `$p` `= 1;` ` ` `while` `(` `$n` `)` ` ` `{` ` ` `// find decimal` ` ` `if` `(` `$n` `% 10)` ` ` `$m` `+= ` `$p` `;` ` ` `$n` `/= 10;` ` ` `$p` `*= 10;` ` ` `}` ` ` `array_push` `(` `$v` `,` `$m` `);` ` ` `// Decrement N by m for` ` ` `// each decimal` ` ` `$N` `-= ` `$m` `;` ` ` `}` ` ` `// Loop for each element of vector` ` ` `// And print its content.` ` ` `for` `(` `$i` `= 0; ` `$i` `< sizeof(` `$v` `); ` `$i` `++)` ` ` `echo` `" "` `, ` `$v` `[` `$i` `];` ` ` `return` `0;` `}` `// Driver code` `$N` `= 31;` `findNumbers(` `$N` `);` `// This code is contributed` `// by ChitraNayal` `?>` |

## Javascript

`<script>` `// Javascript implementation of the above approach` `// Function to count the numbers` `function` `findNumbers(N)` `{` ` ` `// Initialize vector array that store` ` ` `// result.` ` ` `let v = [];` ` ` `// Get the each decimal and find its` ` ` `// count store in vector.` ` ` `while` `(N) {` ` ` `let n = N, m = 0, p = 1;` ` ` `while` `(n) {` ` ` `// find decimal` ` ` `if` `(n % 10)` ` ` `m += p;` ` ` `n = parseInt(n/10);` ` ` `p *= 10;` ` ` `}` ` ` `v.push(m);` ` ` `// Decrement N by m for each decimal` ` ` `N -= m;` ` ` `}` ` ` `// Loop for each element of vector` ` ` `// And print its content.` ` ` `for` `(let i = 0; i < v.length; i++)` ` ` `document.write(` `" "` `+ v[i]);` ` ` `return` `0;` `}` `// Driver code` `let N = 31;` `findNumbers(N);` `// This code is contributed by souravmahato34.` `</script>` |

**Output:**

11 10 10

**Time Complexity**: O(log(N)) **Auxiliary Space**: O(log(N))