hihoCoder 挑战赛10 #1144 : 01串
思路:这只是逻辑测试题吧,考虑周全就行了。考虑n=m的情况,n>m的情况,m>n的情况。
(1)n>m的情况,0比1多几个都是行的,一共有m个“01”,后面补足够多个零即可。
(2)n=m的情况,一直输出“01”就行。
(3)n<m的情况,只允许m-n=1,其他情况都不行,否则肯定会有两个1在一起。
1 #include <iostream> 2 #include <stdio.h> 3 using namespace std; 4 int main() 5 { 6 //freopen("input.txt", "r", stdin); 7 int n, m; 8 while(cin>>n>>m) 9 { 10 if(n==m) //一样多 11 { 12 for(int i=0; i<n+m; i++) 13 { 14 if(i%2==0) printf("0"); 15 else printf("1"); 16 } 17 } 18 else if(n>m) //0多,都行 19 { 20 for(int i=0; i<m; i++) 21 printf("01"); 22 for(int i=0; i<n-m; i++) 23 printf("0"); 24 } 25 else if(n<m) //1多 26 { 27 if(m-n==1 ) //刚好多1个 28 { 29 for(int i=0; i<n+m; i++) 30 { 31 if(i%2==0) printf("1"); 32 else printf("0"); 33 } 34 } 35 else printf("NO"); //多1个以上就是不行 36 } 37 } 38 return 0; 39 }