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> |
Output
11 10 10
Complexity Analysis:
- Time Complexity: O(log(N))
- Auxiliary Space: O(log(N)), since log(N) extra space has been taken.