#include <bits/stdc++.h>
using namespace std;
string a, b, c;
int check(int id) {
int val = 0;
int carry = 0;
for (int i = id; i >= 0; i--) {
val = carry + a[i] - '0' + b[i] - '0';
carry = val >= 10;
val -= 10 * carry;
if (val != c[i] - '0') {
return -1;
}
if (carry == 0) {
return i;
}
}
if (val == c[0] - '0' and carry == 0) {
return 0;
}
return -1;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> a >> b >> c;
long long ans = 0;
long long cnt = 0;
for (int i = a.size() - 1; i >= 0; i--) {
int tmp = check(i);
if (tmp != -1) {
i = tmp;
cnt++;
ans += cnt;
} else {
cnt = 0;
}
}
cout << ans;
}
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 | #include <bits/stdc++.h> using namespace std; string a, b, c; int check(int id) { int val = 0; int carry = 0; for (int i = id; i >= 0; i--) { val = carry + a[i] - '0' + b[i] - '0'; carry = val >= 10; val -= 10 * carry; if (val != c[i] - '0') { return -1; } if (carry == 0) { return i; } } if (val == c[0] - '0' and carry == 0) { return 0; } return -1; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> a >> b >> c; long long ans = 0; long long cnt = 0; for (int i = a.size() - 1; i >= 0; i--) { int tmp = check(i); if (tmp != -1) { i = tmp; cnt++; ans += cnt; } else { cnt = 0; } } cout << ans; } |
English