#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int num(char c) {
return int(c - '0');
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
string a, b, c; cin >> a >> b >> c;
int n = int(a.length());
ll s0 = 0ll, s1 = 0ll, ans = 0ll;
for(int i = n - 1; i >= 0; --i) {
ll s00 = s0, s11 = s1;
s0 = 0ll, s1 = 0ll;
if(num(a[i]) + num(b[i]) == num(c[i])) {
ans += s00 + 1ll;
s0 = s00 + 1ll;
}
else if(num(a[i]) + num(b[i]) + 1 == num(c[i])) {
ans += s11;
s0 = s11;
}
else if(num(a[i]) + num(b[i]) == num(c[i]) + 10)
s1 = s00 + 1ll;
else if(num(a[i]) + num(b[i]) + 1 == num(c[i]) + 10)
s1 = s11;
}
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 | #include <bits/stdc++.h> using namespace std; typedef long long ll; int num(char c) { return int(c - '0'); } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); string a, b, c; cin >> a >> b >> c; int n = int(a.length()); ll s0 = 0ll, s1 = 0ll, ans = 0ll; for(int i = n - 1; i >= 0; --i) { ll s00 = s0, s11 = s1; s0 = 0ll, s1 = 0ll; if(num(a[i]) + num(b[i]) == num(c[i])) { ans += s00 + 1ll; s0 = s00 + 1ll; } else if(num(a[i]) + num(b[i]) + 1 == num(c[i])) { ans += s11; s0 = s11; } else if(num(a[i]) + num(b[i]) == num(c[i]) + 10) s1 = s00 + 1ll; else if(num(a[i]) + num(b[i]) + 1 == num(c[i]) + 10) s1 = s11; } cout << ans << "\n"; return 0; } |
English