#1144 : 01串
时间限制:7000ms
单点时限:1000ms
内存限制:256MB
-
2 3
样例输出 -
10101
描述
给定两个整数n和m,求是否存在恰好包含n个0和m个1的01串S,使得S中不存在子串"001"和"11"。
如果存在符合条件的01串则输出字典序最小的S,否则输出NO。
输入
一行两个整数,表示n和m。(0<=n,m<=100000,0<n+m)
输出
一行一个字符串,为字典序最小的S或者NO。
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int n,m;
while(scanf("%d%d",&n,&m)!=EOF){
if(n==0&&m==0){
cout<<"NO"<<endl;
}
if(n>=m-1){//
if(n==m-1){//如果等于则表现形式必然为101这种形式
for(int i=0;i<n;i++){
cout<<"10";
}
cout<<"1"<<endl;
}else{//否则必然为010101000XXX这种形式
for(int i=0;i<m;i++){
cout<<"01";
}
for(int i=m;i<n;i++){
cout<<"0";
}
cout<<endl;
}
}
else {//如果小于必然出现11
cout<<"NO"<<endl;
}
}
return 0;
}