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

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<iostream> ` `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; ` `} ` |

*chevron_right*

*filter_none*

## 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 ` |

*chevron_right*

*filter_none*

## 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. ` |

*chevron_right*

*filter_none*

## 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 ` |

*chevron_right*

*filter_none*

## PHP

`<?php ` `// PHP 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 ` `function` `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` `= ` `$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. ` `?> ` |

*chevron_right*

*filter_none*

**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 contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

## Recommended Posts:

- Represent the given number as the sum of two composite numbers
- Represent a number as the sum of positive numbers ending with 9
- Minimum number of given powers of 2 required to represent a number
- Minimum count of numbers required from given array to represent S
- Number of distinct ways to represent a number as sum of K unique primes
- Represent K^N as the sum of exactly N numbers
- Represent N as sum of K odd numbers with repetitions allowed
- Represent N as sum of K even numbers
- Represent N as sum of K even or K odd numbers with repetitions allowed
- Represent K as sum of N-bonacci numbers
- Represent a given set of points by the best possible straight line
- Minimum possible value T such that at most D Partitions of the Array having at most sum T is possible
- Count of ways to represent N as sum of a prime number and twice of a square
- Represent the fraction of two numbers in the string format
- Sort numbers based on count of letters required to represent them in words
- Represent n as the sum of exactly k powers of two | Set 2
- Represent (2 / N) as the sum of three distinct positive integers of the form (1 / m)
- Add two integers of different base and represent sum in smaller base of the two
- Minimum LCM and GCD possible among all possible sub-arrays
- Maximum number of distinct positive integers that can be used to represent N