FA
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
int main()
{
char s3[100002];
char s1[100002],s2[100002];
while(cin>>s1>>s2)
{
int len=strlen(s1);
for(int i=0; i<len; i++)
s3[i]='0';
int num=0,num1=0,num2=0;
for(int i=0; i<len; i++)
{
if(s1[i]=='1'&&s2[i]!='1')
num1++;
else if(s2[i]=='1'&&s1[i]!='1')
num2++;
if(s2[i]==s1[i])
s3[i]=s1[i];
else
num++;
}
if(num%2)
cout<<"impossible\n";
else
{
int sum=0;
if(num1>num2)
{
for(int i=0; i<len; i++)
{
if(s1[i]=='1'&&s2[i]=='0')
{
s3[i]='1';
sum++;
if(sum+num2==num/2)
break;
}
}
}
else if(num1<num2)
for(int i=0; i<len; i++)
{
if(s1[i]=='0'&&s2[i]=='1')
{
s3[i]='1';
sum++;
if(sum+num1==num/2)
break;
}
}
//cout<<sum;
for(int i=0; i<len; i++)
cout<<s3[i];
cout<<endl;
}
}
}
先判断一下不相同的个数是否是偶数个,若不是,则不会找到一个距离相同的。若是偶数个,那么只要保证这偶数个不同位中一半是第一个字符串的,另一半是第二个字符串的就可以,可以用奇偶分开选的方法或前一半和后一半分开选的方法