Skip to content
Related Articles

Related Articles

Print numbers with digits 0 and 1 only such that their sum is N
  • Last Updated : 20 Apr, 2021

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: 
 

  1. Initialize product p to 1 and m to zero.
  2. Create the vector that stores the resultant integer counts of 0s and 1s.
  3. 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.
  4. 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

 

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with industry experts, please refer Geeks Classes Live and Geeks Classes Live USA




My Personal Notes arrow_drop_up
Recommended Articles
Page :