#include <iostream>
#include <string>
using namespace std;
const int maxn=1e6+7;
int dp0[maxn];
int dp1[maxn];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
string a,b,c;
cin>>a>>b>>c;
int idx=0;
long long ans=0;
for(int i=a.size()-1;i>=0;i--)
{
int sum1=a[i]+b[i]-96;
int sum2=int(a[i])+int(b[i])+1-96;
idx++;
if(sum1==c[i]-48)
{
dp0[idx]=dp0[idx-1]+1;
}
if(sum2==c[i]-48)
{
dp0[idx]=dp1[idx-1];
}
sum1-=10;
sum2-=10;
if(sum1==c[i]-48)
{
dp1[idx]=dp0[idx-1]+1;
}
if(sum2==c[i]-48)
{
dp1[idx]=dp1[idx-1];
}
ans+=dp0[idx];
}
cout<<ans;
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | #include <iostream> #include <string> using namespace std; const int maxn=1e6+7; int dp0[maxn]; int dp1[maxn]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); string a,b,c; cin>>a>>b>>c; int idx=0; long long ans=0; for(int i=a.size()-1;i>=0;i--) { int sum1=a[i]+b[i]-96; int sum2=int(a[i])+int(b[i])+1-96; idx++; if(sum1==c[i]-48) { dp0[idx]=dp0[idx-1]+1; } if(sum2==c[i]-48) { dp0[idx]=dp1[idx-1]; } sum1-=10; sum2-=10; if(sum1==c[i]-48) { dp1[idx]=dp0[idx-1]+1; } if(sum2==c[i]-48) { dp1[idx]=dp1[idx-1]; } ans+=dp0[idx]; } cout<<ans; return 0; } |
English