赞
踩
题目就是给我们a个0,b个1. 现在问我们能不能构造出两个二进制串使得他们相减后的二进制串中有k个1 . 构造的二进制串不含有前导0
ll a[222222]; ll b[222222]; signed main() { ll n,m,k; read(n); read(m); read(k); if(k==0) { printf("Yes\n"); for(int i=1; i<=m; i++) { printf("1"); } for(int i=1; i<=n; i++) { printf("0"); } printf("\n"); for(int i=1; i<=m; i++) { printf("1"); } for(int i=1; i<=n; i++) { printf("0"); } return 0; } if(n==0&&k!=0) { printf("No"); return 0; } if(m==1&&k!=0) { printf("No"); return 0; } if(m>=2&&n>=1) { ll om=m-2; ll on=n-1; if(om+on+1<k) { printf("No"); return 0; } else { for(int j=n+m; j>=n+m-k; j--) { if(j==n+m) { a[j]=0; b[j]=1; continue; } if(j==n+m-k) { a[j]=1; b[j]=0; continue; } if(om>0) { om--; a[j]=1; b[j]=1; continue; } if(on>0) { on--; a[j]=0; b[j]=0; continue; } } for(int i=1; i<=n+m-k-1; i++) { if(i==1) { a[i]=1; b[i]=1; continue; } if(om>0) { om--; a[i]=1; b[i]=1; continue; } if(on>0) { on--; a[i]=0; b[i]=0; continue; } } printf("Yes\n"); for(int i=1; i<=n+m; i++) { printf("%lld",a[i]); } printf("\n"); for(int i=1; i<=n+m; i++) { printf("%lld",b[i]); } return 0; } printf("No"); return 0; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。