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