#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define st first
#define nd second
#define ld long double
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
string A, B, C;
cin >> A >> B >> C;
int n = A.size();
vector<int> a (n), b (n), c (n), t (n, 0), s (n, 0);
for (int i = 0; i < n; i++) {
a[i] = A[i]-'0';
b[i] = B[i]-'0';
c[i] = C[i]-'0';
s[i] = a[i]+b[i];
if ((a[i]+b[i])%10==c[i]) {
t[i] = 1;
}
if ((a[i]+b[i]+1)%10==c[i]) {
t[i] = 2;
}
}
ll in = n, l = 0, ans = 0;
for (int i = n-1; i >= 0; i--) {
if (t[i] != 1) {
continue;
}
if (in > i) {
int p = s[i]/10;
l = s[i] < 10;
in = i-1;
while (in >= 0) {
//cout << in << ' ' << s[in]+p << '\n';
if ((s[in]+p)%10 == c[in]) {
if (s[in]+p > 9) {
p = 1;
}
else {
l++;
p = 0;
}
}
else {
in++;
break;
}
in--;
}
//cout << l << '\n';
}
ans += l;
//cout << i << ' ' << l << ' ' << ans << '\n';
l--;
}
cout << ans << '\n';
}
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 58 59 60 61 | #include <bits/stdc++.h> using namespace std; #define ll long long #define st first #define nd second #define ld long double int main() { ios_base::sync_with_stdio(0); cin.tie(0); string A, B, C; cin >> A >> B >> C; int n = A.size(); vector<int> a (n), b (n), c (n), t (n, 0), s (n, 0); for (int i = 0; i < n; i++) { a[i] = A[i]-'0'; b[i] = B[i]-'0'; c[i] = C[i]-'0'; s[i] = a[i]+b[i]; if ((a[i]+b[i])%10==c[i]) { t[i] = 1; } if ((a[i]+b[i]+1)%10==c[i]) { t[i] = 2; } } ll in = n, l = 0, ans = 0; for (int i = n-1; i >= 0; i--) { if (t[i] != 1) { continue; } if (in > i) { int p = s[i]/10; l = s[i] < 10; in = i-1; while (in >= 0) { //cout << in << ' ' << s[in]+p << '\n'; if ((s[in]+p)%10 == c[in]) { if (s[in]+p > 9) { p = 1; } else { l++; p = 0; } } else { in++; break; } in--; } //cout << l << '\n'; } ans += l; //cout << i << ' ' << l << ' ' << ans << '\n'; l--; } cout << ans << '\n'; } |
English