CF 401C - Team

来源:互联网 发布:分治策略的算法 编辑:程序博客网 时间:2024/05/16 15:53

题目要求:00和111不能出现

那么只有01和011这两种情况,开头可以是1或11,末尾可以是0

如果0的个数 - 末尾1个>1的个数 或 0的个数*2<1的个数 - 开头2个 则情况为-1

处理开头时1或11或末尾为0的特殊情况,再处理中间的就简单多了。

#include<stdio.h>int main(){int n,m;scanf("%d %d",&n,&m);if(m>2*n+2||n-1>m){printf("-1\n");return 0;}int flag=0;//处理开头和结尾,使m在[n,2n]if(m-2*n==1)printf("1"),m--;else if(m-2*n==2)printf("11"),m-=2;else if(n-1==m)flag=1,n--;while(n!=m){printf("011");n--,m-=2;}for(int i=0;i<n;i++)printf("01");if(flag) printf("0");printf("\n");return 0;}


0 0
原创粉丝点击