Open In App

Represent a number as sum of minimum possible pseudobinary numbers

Last Updated : 19 Dec, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

Given a number, you have to represent this number as sum of minimum number of possible  pseudobinary numbers. A number is said to be  pseudobinary number if its decimal number consists of only two digits (0 and 1). Example: 11,10,101 are all  pseudobinary numbers.
Examples :- 
 

Input : 44
Output : 11 11 11 11

Explanation : 44 can be represented as sum of 
minimum 4 pseudobinary numbers as 11+11+11+11  

Input : 31
Output : 11 10 10

Explanation : 31 can be represented as sum of
minimum 3 pseudobinary numbers as 11+10+10  

 

Recommended Practice

The idea to do this is to first observe carefully that we need to calculate minimum number of possible pseudobinary numbers. To do this we find a new number m such that if for a place in given number n, the digit is non-zero then the digit in that place in m is 1 otherwise zero. For example, if n = 5102, then m will be 1101. Then we will print this number m and subtract m from n. We will keep repeating these steps until n is greater than zero.
 

C++




// C++ program to represent a given
// number as sum of minimum possible
// pseudobinary numbers
#include<iostream>
using namespace std;
 
// function to represent a given
// number as sum of minimum possible
// pseudobinary numbers
void pseudoBinary(int n)
{
    // Repeat below steps until n > 0
    while (n > 0)
    {                
        // calculate m (A number that has same
        // number of digits as n, but has 1 in
        // place of non-zero digits 0 in place
        // of 0 digits)
        int temp = n, m = 0, p = 1;
        while (temp)
        {
            int rem = temp % 10;
            temp = temp / 10;
 
            if (rem != 0)
                m += p;
             
            p *= 10;
        }
         
        cout << m << " ";
 
        // subtract m from n
        n = n - m;
    }
}
 
// Driver code
int main()
{
    int n = 31;
 
    pseudoBinary(n);
 
    return 0;
}


Java




// Java program to represent a given
// number as sum of minimum possible
// pseudobinary numbers
 
import java.util.*;
import java.lang.*;
 
class GFG
{
    public static void pseudoBinary(int n)
    {
        // Repeat below steps until n > 0
        while (n != 0)
        {
            // calculate m (A number that has same
            // number of digits as n, but has 1 in
            // place of non-zero digits 0 in place
            // of 0 digits)
            int temp = n, m = 0, p = 1;
            while(temp != 0)
            {
                int rem = temp % 10;
                temp = temp / 10;
 
                if (rem != 0)
                    m += p;
 
                p *= 10;
            }
 
            System.out.print(m + " ");
             
            // subtract m from n
            n = n - m;
        }
        System.out.println(" ");
    }
 
// Driver code
public static void main(String[] args)
    {
        int n = 31;
        pseudoBinary(n);
    }
}
 
// This code is contributed by Mohit Gupta_OMG


Python3




# Python3 program to represent
# a given number as sum of
# minimum possible pseudobinary
# numbers
 
# function to represent a
# given number as sum of
# minimum possible
# pseudobinary numbers
def pseudoBinary(n):
     
    # Repeat below steps
    # until n > 0
    while (n > 0):
         
        # calculate m (A number
        # that has same number
        # of digits as n, but
        # has 1 in place of non-zero
        # digits 0 in place of 0 digits)
        temp = n;
        m = 0;
        p = 1;
        while (temp):
            rem = temp % 10;
            temp = int(temp / 10);
             
            if (rem != 0):
                m += p;
            p *= 10;
         
        print(m,end=" ");
         
        # subtract m from n
        n = n - m;
 
# Driver code
n = 31;
pseudoBinary(n);
 
# This code is contributed
# by mits.


C#




// C# program to represent a given
// number as sum of minimum possible
// pseudobinary numbers
 
using System;
 
class GFG
{
    public static void pseudoBinary(int n)
    {
        // Repeat below steps until n > 0
        while (n != 0)
        {
            // calculate m (A number that has same
            // number of digits as n, but has 1 in
            // place of non-zero digits 0 in place
            // of 0 digits)
            int temp = n, m = 0, p = 1;
            while(temp != 0)
            {
                int rem = temp % 10;
                temp = temp / 10;
 
                if (rem != 0)
                    m += p;
 
                p *= 10;
            }
 
            Console.Write(m + " ");
             
            // subtract m from n
            n = n - m;
        }
        Console.Write(" ");
    }
 
// Driver code
public static void Main()
    {
        int n = 31;
        pseudoBinary(n);
    }
}
 
// This code is contributed by nitin mittal


PHP




<?php
// PHP program to represent a
// given number as sum of minimum
// possible pseudobinary numbers
 
// Function to represent a
// given number as sum of minimum
// possible pseudobinary numbers
function pseudoBinary($n)
{
    // Repeat below steps until n > 0
    while ($n > 0)
    {                
        // calculate m (A number
        // that has same number of
        // digits as n, but has 1
        // in place of non-zero
        // digits 0 in place of 0
        // digits)
        $temp = $n; $m = 0; $p = 1;
        while ($temp)
        {
            $rem = $temp % 10;
            $temp = $temp / 10;
 
            if ($rem != 0)
                $m += $p;
             
            $p *= 10;
        }
         
        echo $m , " ";
 
        // subtract m from n
        $n = $n - $m;
    }
}
 
// Driver code
$n = 31;
pseudoBinary($n);
 
// This code is contributed
// by nitin mittal.
?>


Javascript




<script>
 
// JavaScript program to represent a given
// number as sum of minimum possible
// pseudobinary numbers   
 
function pseudoBinary( n)
{
        // Repeat below steps until n > 0
        while (n != 0)
        {
            // calculate m (A number that has same
            // number of digits as n, but has 1 in
            // place of non-zero digits 0 in place
            // of 0 digits)
            var temp = n, m = 0, p = 1;
            while (temp != 0) {
                var rem = temp % 10;
                temp = parseInt(temp / 10);
 
                if (rem != 0)
                    m += p;
 
                p *= 10;
            }
 
            document.write(m + " ");
 
            // subtract m from n
            n = n - m;
        }
        document.write(" ");
    }
 
    // Driver code
     
        var n = 31;
        pseudoBinary(n);
 
// This code is contributed by Amit Katiyar
 
</script>


Output:  

11 10 10

Time Complexity : O( log n ) 
Auxiliary Space : O(1)

 



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads