#include<iostream>
#include<cstdio>
#define re register int
#define il inline
using namespace std;
const int N=1e4+10;
string ch,ch1;
int a[N],b[N],lena,lenb,lenc,c[N],lent,t[N],cc[N],lencc,lend,d[N];
il bool pd(){
if(lena<lenb)return 1;
if(lenb<lena)return 0;
for(re i=lena;i>=1;i--){
if(a[i]<b[i])return 1;
if(a[i]>b[i])return 0;
}
return 1;
}
int main(){
cin>>ch;
lena=ch.length();
for(re i=lena;i>=1;i--)a[i]=ch[lena-i]-'0';
cin>>ch1;
lenb=ch1.length();
for(re i=lenb;i>=1;i--)b[i]=ch1[lenb-i]-'0';
lencc=1;
cc[lencc]=1;
while(1){
if(pd()){
lent=lena;
for(re i=1;i<=lent;i++)t[i]=a[i];
lena=lenb;
for(re i=1;i<=lenb;i++)a[i]=b[i];
lenb=lent;
for(re i=1;i<=lent;i++)b[i]=t[i];
}
if(lenb==1&&b[1]==0){
// cout<<lencc<<" "<<cc[1]<<endl;
lend=lencc+lena;
for(re i=1;i<=lencc;i++){
int x=0;
for(re j=1;j<=lena;j++){
d[i+j-1]=d[i+j-1]+x+cc[i]*a[j];
x=d[i+j-1]/10;
d[i+j-1]%=10;
}
d[i+lena]=x;
}
while(lend>1&&d[lend]==0)lend--;
for(re i=lend;i>=1;i--)printf("%d",d[i]);
return 0;
}
while(a[1]%2==0&&b[1]%2!=0){
if(a[1]==0&&lena==1)break;
int x=0;
for(re i=lena;i>=1;i--){
int xx=a[i];
a[i]=(x*10+a[i])/2;
x=x*10+xx-a[i]*2;
}
while(lena>1&&a[lena]==0)lena--;
}
while(b[1]%2==0&&a[1]%2!=0){
if(b[1]==0&&lenb==1)break;
int x=0;
for(re i=lenb;i>=1;i--){
int xx=b[i];
b[i]=(x*10+b[i])/2;
x=x*10+xx-b[i]*2;
}
while(lenb>1&&b[lenb]==0)lenb--;
}
while(a[1]%2==0&&b[1]%2==0){
// cout<<"dfslnhdfgh"<<endl;
if(a[1]==0&&lena==1)break;
if(b[1]==0&&lenb==1)break;
int x=0;
for(re i=lena;i>=1;i--){
int xx=a[i];
a[i]=(x*10+a[i])/2;
x=x*10+xx-a[i]*2;
}
while(lena>1&&a[lena]==0)lena--;
x=0;
for(re i=lenb;i>=1;i--){
int xx=b[i];
b[i]=(x*10+b[i])/2;
x=x*10+xx-b[i]*2;
}
while(lenb>1&&b[lenb]==0)lenb--;
x=0;
for(re i=1;i<=lencc;i++){
cc[i]=cc[i]*2+x;
// cout<<cc[i]<<" f"<<endl;
x=cc[i]/10;
cc[i]%=10;
}
while(x){
// cout<<x<<"dfg"<<endl;
lencc++;
cc[lencc]=x%10;
x/=10;
}
}
if(pd()){
lent=lena;
for(re i=1;i<=lent;i++)t[i]=a[i];
lena=lenb;
for(re i=1;i<=lenb;i++)a[i]=b[i];
lenb=lent;
for(re i=1;i<=lent;i++)b[i]=t[i];
}
if(lenb==1&&b[1]==0){
lend=lencc+lena;
cout<<lencc<<endl;
for(re i=1;i<=lencc;i++){
int x=0;
for(re j=1;j<=lena;j++){
d[i+j-1]+=x+cc[i]*a[j];
x=d[i+j-1]/10;
d[i+j-1]%=10;
}
d[i+lena]=x;
}
while(lend>1&&d[lend]==0)lend--;
for(re i=lend;i>=1;i--)printf("%d",d[i]);
return 0;
}
lenc=lena;
for(re i=1;i<=lena;i++){
if(i>lenb)b[i]=0;
if(a[i]<b[i]){
a[i]+=10;
a[i+1]--;
}
c[i]=a[i]-b[i];
}
while(lenc>1&&c[lenc]==0)lenc--;
lena=lenb;
for(re i=1;i<=lenb;i++)a[i]=b[i];
lenb=lenc;
for(re i=1;i<=lenc;i++)b[i]=c[i];
}
return 0;
}
已经调好久,难了大绷了,帮忙者重谢(