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

CServer Side ProgrammingProgramming

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
raja
Published on 22-Aug-2019 12:39:48
Advertisements