#include <bits/stdc++.h>
using namespace std;
typedef long long int lli;
const int MAXN = 1000005;
char t[3][MAXN];
lli dp[MAXN][2];
int main() {
for (int i=0; i<3; i++) {
scanf("%s", t[i]);
}
int n = strlen(t[0]);
for (int i=0; i<n; i++) {
for (int j=0; j<3; j++) {
t[j][i] -= '0';
}
}
lli res = 0;
for (int i=n-1; i>=0; i--) {
lli s = t[0][i] + t[1][i];
if (s%10 == t[2][i]) {
if (s < 10) {
// printf("p1\n");
dp[i][0] = dp[i+1][0] + 1;
}
else {
// printf("p2\n");
dp[i][1] = dp[i+1][0] + 1;
}
}
else if ((s + 1)%10 == t[2][i]) {
if (s+1 < 10) {
// printf("p3\n");
dp[i][0] = dp[i+1][1];
}
else {
// printf("p4\n");
dp[i][1] = dp[i+1][1];
}
}
// printf("%d (%d %d %d, %lld): %lld %lld\n", i, t[0][i], t[1][i], t[2][i], s, dp[i][0], dp[i][1]);
res += dp[i][0];
}
printf("%lld\n", res);
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 58 59 | #include <bits/stdc++.h> using namespace std; typedef long long int lli; const int MAXN = 1000005; char t[3][MAXN]; lli dp[MAXN][2]; int main() { for (int i=0; i<3; i++) { scanf("%s", t[i]); } int n = strlen(t[0]); for (int i=0; i<n; i++) { for (int j=0; j<3; j++) { t[j][i] -= '0'; } } lli res = 0; for (int i=n-1; i>=0; i--) { lli s = t[0][i] + t[1][i]; if (s%10 == t[2][i]) { if (s < 10) { // printf("p1\n"); dp[i][0] = dp[i+1][0] + 1; } else { // printf("p2\n"); dp[i][1] = dp[i+1][0] + 1; } } else if ((s + 1)%10 == t[2][i]) { if (s+1 < 10) { // printf("p3\n"); dp[i][0] = dp[i+1][1]; } else { // printf("p4\n"); dp[i][1] = dp[i+1][1]; } } // printf("%d (%d %d %d, %lld): %lld %lld\n", i, t[0][i], t[1][i], t[2][i], s, dp[i][0], dp[i][1]); res += dp[i][0]; } printf("%lld\n", res); return 0; } |
English