加法性质+hash
#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <vector>
using namespace std;
char ch[1000005];
long long pre1[1000005];
long long pre2[1000005];
long long mod1=1e9+7;
long long mod2=1e9+9;
long long fac1[1000005];
long long fac2[1000005];
int len;
bool check(int s1,int s2)
{
if(s1==1 || s2==s1)
return false;
if(ch[1-1]=='0' && s1!=1+1)
return false;
if(ch[s1-1]=='0' && s2!=s1+1)
return false;
if(ch[s2-1]=='0' && len!=s2)
return false;
long long a1=pre1[s1-1]-pre1[0]*fac1[s1-1-0];
a1=((a1%mod1+mod1)%mod1)%mod1;
//a1=a1*fac1[s2-1]%mod1;
long long a2=pre1[s2-1]-pre1[s1-1]*fac1[s2-s1]%mod1;
a2=((a2%mod1+mod1)%mod1)%mod1;
//a2=a2*fac1[s2-s1]%mod1;
long long a3=pre1[len]-pre1[s2-1]*fac1[len-s2+1]%mod1;
a3=((a3%mod1+mod1)%mod1)%mod1;
//a3=a3*fac1[len-s1+1]%mod1;
if(((a1+a2)%mod1)!=a3)
return false;
long long aa1=pre2[s1-1]-pre2[0]*fac2[s1-1-0]%mod2;
aa1=((aa1%mod2+mod2)%mod2)%mod2;
//aa1=aa1*fac2[s2-1]%mod2;
long long aa2=pre2[s2-1]-pre2[s1-1]*fac2[s2-s1]%mod2;
aa2=((aa2%mod2+mod2)%mod2)%mod2;
//aa2=aa2*fac2[s2-s1]%mod2;
long long aa3=pre2[len]-pre2[s2-1]*fac2[len-s2+1]%mod2;
aa3=((aa3%mod2+mod2)%mod2)%mod2;
if(((aa1+aa2)%mod2)!=aa3)
return false;
return true;
}
int main() {
fac1[0]=fac2[0]=1;
pre1[0]=pre2[0]=0;
for(int i=1;i<=1000000;i++)
{
fac1[i]=fac1[i-1]*10%mod1;
fac2[i]=fac2[i-1]*10%mod2;
}
while(~scanf("%s",ch))
{
len=strlen(ch);
//cout<<len<<endl;
for(int i=1;i<=len;i++)
{
pre1[i]=(pre1[i-1]*10+(ch[i-1]-'0'))%mod1;
pre2[i]=(pre2[i-1]*10+(ch[i-1]-'0'))%mod2;
}
int ans1,ans2;
int f=0;
for(int i=3;i<=len;i++)
{
int l1=i-1;
int l2=len-i+1;
if(l1>l2*2)
continue;
if(l1<l2)
continue;
int sta=i-l2;
for(int j=0;j<2;j++)
{
if(check(sta+j,i))
{
ans1=sta+j;ans2=i;
f=1;
break;
}
}
if(f==1)
break;
sta=l2+1;
//cout<<i<<endl;
for(int j=0;j<2;j++)
{
if(check(sta-j,i))
{
ans1=sta-j;ans2=i;
f=1;
break;
}
}
if(f==1)
break;
}
//cout<<ans1<<" "<<ans2<<endl;
for(int i=1;i<ans1;i++)
printf("%c",ch[i-1]);
cout<<"+";
for(int i=ans1;i<ans2;i++)
printf("%c",ch[i-1]);
cout<<"=";
for(int i=ans2;i<=len;i++)
printf("%c",ch[i-1]);
cout<<endl;
}
return 0;
}