#include <bits/stdc++.h>
using namespace std;
bool val(int r1,int r2){
if (r1==0 || r1==10){
if (r2==0 || r2==-1) return true;
}
if (r1==-1 || r1==9){
if (r2==10 || r2==9) return true;
}
return false;
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
string str1,str2,str3;
cin>>str1>>str2>>str3;
int n=str1.size();
vector<int> s1(n),s2(n),s3(n);
for (int i=0;i<n;i++){
s1[i]=str1[i]-'0';
s2[i]=str2[i]-'0';
s3[i]=str3[i]-'0';
}
int l=0;
vector<pair<int,int>> vp;
while (l<n){
int r=l;
while (r+1<n && val(s1[r]+s2[r]-s3[r] , s1[r+1]+s2[r+1]-s3[r+1])) r++;
vp.push_back({l,r});
l=r+1;
}
long long ans=0;
for (auto [f,s]:vp){
int good=0;
for (int i=f;i<=s;i++){
if (s1[i]+s2[i]-s3[i]==0 || s1[i]+s2[i]-s3[i]==-1) good++;
if (s1[i]+s2[i]-s3[i]==0 || s1[i]+s2[i]-s3[i]==10) ans+=good;
}
}
cout<<ans<<"\n";
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 | #include <bits/stdc++.h> using namespace std; bool val(int r1,int r2){ if (r1==0 || r1==10){ if (r2==0 || r2==-1) return true; } if (r1==-1 || r1==9){ if (r2==10 || r2==9) return true; } return false; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); string str1,str2,str3; cin>>str1>>str2>>str3; int n=str1.size(); vector<int> s1(n),s2(n),s3(n); for (int i=0;i<n;i++){ s1[i]=str1[i]-'0'; s2[i]=str2[i]-'0'; s3[i]=str3[i]-'0'; } int l=0; vector<pair<int,int>> vp; while (l<n){ int r=l; while (r+1<n && val(s1[r]+s2[r]-s3[r] , s1[r+1]+s2[r+1]-s3[r+1])) r++; vp.push_back({l,r}); l=r+1; } long long ans=0; for (auto [f,s]:vp){ int good=0; for (int i=f;i<=s;i++){ if (s1[i]+s2[i]-s3[i]==0 || s1[i]+s2[i]-s3[i]==-1) good++; if (s1[i]+s2[i]-s3[i]==0 || s1[i]+s2[i]-s3[i]==10) ans+=good; } } cout<<ans<<"\n"; return 0; } |
English