#1144 : 01串
時間限制:7000ms
單點時限:1000ms
內存限制:256MB
描述
給定兩個整數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。
2 3樣例輸出
10101
#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;
}