0
点赞
收藏
分享

微信扫一扫

ZCMU--1593: 01串(C语言)

一枚路过的程序猿 2022-03-26 阅读 31
c语言

题目描述

给定两个整数n和m,求是否存在恰好包含n个0和m个1的01串S,使得S中不存在子串"001"和"11"。

如果存在符合条件的01串则输出字典序最小的S,否则输出NO。

输入

一行两个整数,表示n和m。(0<=n,m<=100000,0<n+m)

注意:有多组输入数据。

输出

输出符合要求的01串

样例输入

2   3

样例输出

10101

解析:注意0可以为第一位,这里列出规律.

        n > m:       m个01    +    n-m  个0
        n == m:     n个01
        n = m-1: 1 + n个01
        n !=0&&m==0 :    n个0
        n ==0&&m==1:        1  (因为此时m>1会出现11,与题意就矛盾了)

        其他情况均输出   NO

#include <stdio.h>
int main()
{
	int n,m,i;
	while(~scanf("%d %d",&n,&m)){
		if(n>m){
			for(i=0;i<m;i++) printf("01");
			for(i=0;i<n-m;i++) printf("0");
			printf("\n");
		}else if(n==m){
			for(i=0;i<n;i++) printf("01");
			printf("\n");
		}else if(n==m-1){
			printf("1");
			for(i=0;i<n;i++) printf("01");
			printf("\n");
		}else if(n!=0&&m==0){
			for(i=0;i<n;i++) printf("0");
			printf("\n");
		}else if(n==0&&m==1){
			printf("1\n");
		}else{
			printf("NO\n");
		}
	}
	return 0;
}

 

举报

相关推荐

0 条评论