#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
string a, b, c;
cin >> a >> b >> c;
int n = a.size();
int odp = 0;
vector <vector<int>> dp(n, vector<int>(2));
for (int i = 0; i < n; i++) {
dp[i][0] = dp[i][1] = 0;
int d = (a[i] - '0')+(b[i] - '0') - (c[i] - '0');
bool start = (d == 0 || d == -1);
int s;
if (d == 0 || d == 10)
s = 0;
else if (d == -1 || d == 9)
s = 1;
else
continue;
if (start) {
if (i > 0)
dp[i][s] = dp[i-1][0] + 1;
else
dp[i][s] = 1;
}else
if (i > 0)
dp[i][s] = dp[i-1][1];
odp += dp[i][0];
}
cout << odp;
}
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; #define int long long signed main() { ios::sync_with_stdio(0); cin.tie(0); string a, b, c; cin >> a >> b >> c; int n = a.size(); int odp = 0; vector <vector<int>> dp(n, vector<int>(2)); for (int i = 0; i < n; i++) { dp[i][0] = dp[i][1] = 0; int d = (a[i] - '0')+(b[i] - '0') - (c[i] - '0'); bool start = (d == 0 || d == -1); int s; if (d == 0 || d == 10) s = 0; else if (d == -1 || d == 9) s = 1; else continue; if (start) { if (i > 0) dp[i][s] = dp[i-1][0] + 1; else dp[i][s] = 1; }else if (i > 0) dp[i][s] = dp[i-1][1]; odp += dp[i][0]; } cout << odp; } |
English