# Print n 0s and m 1s such that no two 0s and no three 1s are together in C Program

CServer Side ProgrammingProgramming

There should be sequence of N 0’s and M 1’s such that the sequence so formed shouldn’t contain two consecutive 0’s with three consecutive 1’s.

Input − N=5 M=9

Output − 1 1 0 1 1 0 1 1 0 1 0 1 0 1

Note − To make the above sequence, the statement (m < n-1) || m >= 2 * (n + 1) should be false if it is true than we can’t make the above sequence.

It is advisable to first go through question logic and try yourself instead of jumping to the solution directly given below.

## Algorithm

START
Step 1 -> take values in ‘n’ and ‘m’
Step 2 -> Loop IF m=n-1
Loop While m>0 and n>0
Print 01
Decrement m and n by 1
End Loop While
Loop IF n!=0
Print 0
End IF
Loop IF m!=0
Print 1
End IF
Step 3-> Else (m < n-1) || m >= 2 * (n + 1)
Print cn’t have sequence for this
Step 4 -> Else
Loop While m-n > 1 && n > 0
Print 1 1 0
Decrement m by 2 and n by 1
End While
Loop While n>0
Print 1 0
Decrement m and n by 1
End While
Loop While m>0
Print 1
Decrement m by 1
End While
Step 5-> End Else
STOP

## Example

#include <stdio.h>
#include <math.h>
int main() {
int n =5, m=9;
if( m == n-1 ) { //If m is 1 greater than n then consecutive 0's and 1's
while( m > 0 && n > 0 ) { //Loop until all m's and n's
printf("01");
m--;
n--;
}
if ( n!=0 ) //Print the remaining 0
printf("0");
if( m!=0 ) //Print the remaining 1
printf("1");
}
else if ( (m < n-1) || m >= 2 * (n + 1) ) { //If this is true the sequence can't be made
printf("Can't have sequence for this\n");
} else {
while( m-n > 1 && n > 0 ) {
printf("1 1 0 ");
m -= 2;
n--;
}
while ( n > 0 ) {
printf("1 0 ");
n--;
m--;
}
while ( m > 0 ) {
printf("1 ");
m--;
}
}
return 0;
}

## Output

If we run above program then it will generate following output.

1 1 0 1 1 0 1 1 0 1 0 1 0 1
Published on 08-Aug-2019 09:08:00