Print numbers with digits 0 and 1 only such that their sum is N in C Program.


Given an integer n, the task is to print the numbers who consist only 0’s and 1’s and their sum is equal to the integer n.

The numbers which contain only zeros and ones are 1, 10, 11 so we have to print all those numbers which can be added to form the sum equal to n.

Like, we entered n = 31 then the answer can be 10+10+11 or 10+10+10+1 the

Example

Input: 31
Output:10 10 10 1

Algorithm

int findNumbers(int n)
START
STEP 1: DECLARE AND ASSIGN VARAIBALES m = n % 10, a = n
STEP 2: LOOP WHILE a>0
   IF a/10 > 0 && a > 20 THEN,
      SUBTARCT 10 FROM a AND STORE BACK IT IN a
      PRINT "10 "
   ELSE IF a-11 == 0 THEN,
      SUBTRACT 11 FROM a AND STORE
      BACK IN a
      PRINT "11 "
   ELSE
      PRINT "1 "
      DECREMENT a BY 1
   END IF
END LOOP
STOP

Example

#include <stdio.h>
// Function to count the numbers
int findNumbers(int n){
   int m = n % 10, a = n;
   while(a>0){
      if( a/10 > 0 && a > 20 ){
         a = a-10;
         printf("10 ");
      }
      else if(a-11 == 0 ){
         a = a-11;
         printf("11 ");
      }
      else{
         printf("1 ");
         a--;
      }
   }
}
// Driver code
int main(){
   int N = 35;
   findNumbers(N);
   return 0;
}

Output

If we run the above program then it will generate the following output:

10 10 1 1 1 1 11

Updated on: 22-Aug-2019

202 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements