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> |
11 10 10
Complexity Analysis:
- Time Complexity: O(log(N))
- Auxiliary Space: O(log(N)), since log(N) extra space has been taken.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

… [Trackback]
[…] Find More Info here on that Topic: geeksforgeeks.org/print-numbers-with-digits-0-and-1-only-such-that-their-sum-is-n/ […]