# Represent a number as sum of minimum possible psuedobinary numbers

• Difficulty Level : Medium
• Last Updated : 20 May, 2021

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

```Input : 44
Output : 11 11 11 11

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

Input : 31
Output : 11 10 10

Explanation : 31 can be represented as sum of
minimum 3 psuedobinary 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 psuedobinary 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``// psuedobinary numbers``#include``using` `namespace` `std;` `// function to represent a given``// number as sum of minimum possible``// psuedobinary numbers``void` `psuedoBinary(``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;` `    ``psuedoBinary(n);` `    ``return` `0;``}`

## Java

 `// Java program to represent a given``// number as sum of minimum possible``// psuedobinary numbers` `import` `java.util.*;``import` `java.lang.*;` `class` `GFG``{``    ``public` `static` `void` `psuedoBinary(``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``;``        ``psuedoBinary(n);``    ``}``}` `// This code is contributed by Mohit Gupta_OMG`

## Python3

 `# Python3 program to represent``# a given number as sum of``# minimum possible psuedobinary``# numbers` `# function to represent a``# given number as sum of``# minimum possible``# psuedobinary numbers``def` `psuedoBinary(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``;``psuedoBinary(n);` `# This code is contributed``# by mits.`

## C#

 `// C# program to represent a given``// number as sum of minimum possible``// psuedobinary numbers` `using` `System;` `class` `GFG``{``    ``public` `static` `void` `psuedoBinary(``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;``        ``psuedoBinary(n);``    ``}``}` `// This code is contributed by nitin mittal`

## PHP

 ` 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;``psuedoBinary(``\$n``);` `// This code is contributed``// by nitin mittal.``?>`

## Javascript

 ``

Output:

`11 10 10`

Time Complexity : O( log n )
Auxiliary Space : O(1)
This article is contributed by Harsh Agarwal. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

My Personal Notes arrow_drop_up