记录两个字符串中满足 t[i]!=s[i] 的下标 i ,并统计个数。
如果为奇数则不可能,为偶数则取前一半,将 s 中的相应 s[i] 改成 !s[i] 即可,因为题目中说只要输出任意一组满足要求的字符串即可。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=100000+100;
char s[maxn],t[maxn];
int num[maxn];
int main()
{
while(~scanf("%s%s",s,t))
{
int cnt=0,i;
int len=strlen(s);
for(i=0;i<len;i++)
if(s[i]!=t[i]) num[cnt++]=i;
if(cnt&1) printf("impossible\n");
else
{
for(int j=0;j<cnt/2;j++)
if(s[num[j]]=='1') s[num[j]]='0';
else if(s[num[j]]=='0') s[num[j]]='1';
printf("%s\n",s);
}
}
return 0;
}