#include <bits/stdc++.h>
using namespace std;
int main() {
// std::ios_base::sync_with_stdio(false);
// std::cin.tie(NULL);
long long maks=0;
string s1,s2,s3;
cin>>s1>>s2>>s3;
vector<long long> nums;
long long len = s1.length();
nums.assign(len,0);
for (long long i=0;i<len;i++) nums[i] = s1[i]+s2[i]-s3[i]-48;
vector<long long> res_ends(len+1,0);
bool ciag = false;
long long P=len-1,L=0;
res_ends[len] = 0;
for (long long i=len-1;i>=0;i--) {
if (nums[i]==0) {
ciag=false;
res_ends[i] = res_ends[i+1]+1;
P=i;
}
else if (nums[i]==10) {
P=i;
ciag = true;
}
else if (nums[i]==9) {
if (ciag==false) P=i;
}
else if (nums[i]==-1) {
if (ciag==true) res_ends[i] = 1+res_ends[P+1];
ciag=false;
P=i;
} else {
P=i;
ciag = false;
}
}
long long wynik=0;
for (long long i=0;i<len;i++) {
wynik+=res_ends[i];
}
cout<<wynik;
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 55 56 57 | #include <bits/stdc++.h> using namespace std; int main() { // std::ios_base::sync_with_stdio(false); // std::cin.tie(NULL); long long maks=0; string s1,s2,s3; cin>>s1>>s2>>s3; vector<long long> nums; long long len = s1.length(); nums.assign(len,0); for (long long i=0;i<len;i++) nums[i] = s1[i]+s2[i]-s3[i]-48; vector<long long> res_ends(len+1,0); bool ciag = false; long long P=len-1,L=0; res_ends[len] = 0; for (long long i=len-1;i>=0;i--) { if (nums[i]==0) { ciag=false; res_ends[i] = res_ends[i+1]+1; P=i; } else if (nums[i]==10) { P=i; ciag = true; } else if (nums[i]==9) { if (ciag==false) P=i; } else if (nums[i]==-1) { if (ciag==true) res_ends[i] = 1+res_ends[P+1]; ciag=false; P=i; } else { P=i; ciag = false; } } long long wynik=0; for (long long i=0;i<len;i++) { wynik+=res_ends[i]; } cout<<wynik; return 0; } |
English