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: 9 Output: 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: 31 Output: 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 numbersint 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 codeint 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 numbersdef 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 Codeif __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 numbersfunction 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 numbersfunction 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 codelet N = 31;findNumbers(N);// This code is contributed by souravmahato34.</script> |
Output
11 10 10
Complexity Analysis:
- Time Complexity: O(log(N))
- Auxiliary Space: O(log(N)), since log(N) extra space has been taken.
Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



