NC237733. 01串题
描述
输入描述
第一行输入三个非负整数,,,分别代表,的数目和最后的字符串长度。,且、不同时为0。保证一定是偶数。
输出描述
输出你构造出来的字符串,如果无法构造出来,那么输出-1。
示例1
输入:
3 1 2
输出:
0001
说明:
示例2
输入:
2 1 2
输出:
-1
说明:
我们无法生成字符串C++(clang++ 11.0.1) 解法, 执行用时: 10ms, 内存消耗: 512K, 提交时间: 2023-07-31 09:35:11
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; int a[N]; int main() { int a,b,x; cin>>a>>b>>x; int l=x/2; if(a<l||b<l||(a-l)&1||(b-l)&1) return cout<<-1,0; for(int i=1;i<=a-l;i++) cout<<0; for(int i=1;i<=l;i++) cout<<"01"; for(int i=1;i<=b-l;i++) cout<<1; }
C 解法, 执行用时: 4ms, 内存消耗: 456K, 提交时间: 2022-06-03 20:07:41
#include<stdio.h> main() { int a,b,x,k=0,i,l; scanf("%d%d%d",&a,&b,&x); l=x/2; if(a<l || b<l || (a-l)%2!=0 || (b-l)%2!=0) k=1; if(k==1) printf("-1"); if(k==0) { for(i=0;i<a-l;i++) printf("0"); for(i=0;i<l;i++) printf("01"); for(i=0;i<b-l;i++) printf("1"); } }
pypy3 解法, 执行用时: 121ms, 内存消耗: 25920K, 提交时间: 2022-06-03 19:43:48
a,b,x=map(int, input().split()) if x==0 and not a&1 and not b&1: print(a*'0'+b*'1') elif (a+b)&1 or min(a,b)*2<x or (a-x//2)&1 or (b-x//2)&1: print(-1) else: a-=x//2-1 b-=x//2-1 print(a*'0'+b*'1'+'01'*(x//2-1))
Python3 解法, 执行用时: 44ms, 内存消耗: 4852K, 提交时间: 2022-06-05 20:39:56
a,b,x=map(int,input().split()) x>>=1 print(-1 if min(a,b)<x or a-x&1 or b-x&1 else'01'*x+'0'*(a-x)+'1'*(b-x))