#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <iomanip>
#include <set>
using namespace std;
using ll = long long;
using vi = vector<int>;
using pii = pair<int, int>;
#define ff first
#define ss second
const int MAXN = 1e6 + 7;
ll dp[MAXN][2];
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
string s1, s2, s3;
cin >> s1 >> s2 >> s3;
int n = s1.size();
ll ans = 0;
for (int i = n - 1; i >= 0; i--) {
int a = s1[i] - '0';
int b = s2[i] - '0';
int c = s3[i] - '0';
int r = (a + b) / 10;
if (!r) {
if (a + b == c) {
dp[i][0] = 1 + dp[i + 1][0];
}
else if ((a + b + 1) % 10 == c){
int r2 = (a + b + 1) / 10;
dp[i][r2] = dp[i + 1][1];
}
}
else {
if ((a + b) % 10 == c) {
dp[i][1] = 1 + dp[i + 1][0];
}
else if ((a + b + 1) % 10 == c) {
dp[i][1] = dp[i + 1][1];
}
}
ans += dp[i][0];
// cout << i << ' ' << dp[i][0] << ' ' << dp[i][1] << '\n';
}
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 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 62 63 64 65 | #include <iostream> #include <vector> #include <cmath> #include <algorithm> #include <iomanip> #include <set> using namespace std; using ll = long long; using vi = vector<int>; using pii = pair<int, int>; #define ff first #define ss second const int MAXN = 1e6 + 7; ll dp[MAXN][2]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); string s1, s2, s3; cin >> s1 >> s2 >> s3; int n = s1.size(); ll ans = 0; for (int i = n - 1; i >= 0; i--) { int a = s1[i] - '0'; int b = s2[i] - '0'; int c = s3[i] - '0'; int r = (a + b) / 10; if (!r) { if (a + b == c) { dp[i][0] = 1 + dp[i + 1][0]; } else if ((a + b + 1) % 10 == c){ int r2 = (a + b + 1) / 10; dp[i][r2] = dp[i + 1][1]; } } else { if ((a + b) % 10 == c) { dp[i][1] = 1 + dp[i + 1][0]; } else if ((a + b + 1) % 10 == c) { dp[i][1] = dp[i + 1][1]; } } ans += dp[i][0]; // cout << i << ' ' << dp[i][0] << ' ' << dp[i][1] << '\n'; } cout << ans << '\n'; return 0; } |
English