#include <cstdio>
#include <vector>
using std::vector;
const int M = 1'001'013;
char buf[M];
vector<int> wczyt() {
vector<int> x;
scanf("%s", buf);
for (int i = 0; buf[i]; i++) x.push_back(buf[i] - '0');
return x;
}
int p[M], r[M];
int main() {
vector<int> a = wczyt();
vector<int> b = wczyt();
vector<int> c = wczyt();
int n = a.size();
p[0] = 0;
r[0] = 0;
long long ret = 0;
for (int i = 0; i < n; i++) {
p[i+1] = r[i+1] = 0;
if (a[i] + b[i] == c[i]) {
p[i+1]++;
p[i+1] += p[i];
}
if (a[i] + b[i] + 1 == c[i]) {
r[i+1]++;
r[i+1] += p[i];
}
if (a[i] + b[i] == c[i] + 10) {
p[i+1] += r[i];
}
if (a[i] + b[i] + 1 == c[i] + 10) {
r[i+1] += r[i];
}
ret += p[i+1];
}
printf("%lld\n", ret);
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 | #include <cstdio> #include <vector> using std::vector; const int M = 1'001'013; char buf[M]; vector<int> wczyt() { vector<int> x; scanf("%s", buf); for (int i = 0; buf[i]; i++) x.push_back(buf[i] - '0'); return x; } int p[M], r[M]; int main() { vector<int> a = wczyt(); vector<int> b = wczyt(); vector<int> c = wczyt(); int n = a.size(); p[0] = 0; r[0] = 0; long long ret = 0; for (int i = 0; i < n; i++) { p[i+1] = r[i+1] = 0; if (a[i] + b[i] == c[i]) { p[i+1]++; p[i+1] += p[i]; } if (a[i] + b[i] + 1 == c[i]) { r[i+1]++; r[i+1] += p[i]; } if (a[i] + b[i] == c[i] + 10) { p[i+1] += r[i]; } if (a[i] + b[i] + 1 == c[i] + 10) { r[i+1] += r[i]; } ret += p[i+1]; } printf("%lld\n", ret); return 0; } |
English