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 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> |
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!