#include <bits/stdc++.h>
using namespace std;
#define int long long
const int oo = 1e9 + 7;
void solve() {
string a, b, c; cin >> a >> b >> c;
int n = (int)a.size();
vector dp(n+1, vector<int>(2));
int ans = 0;
for (int i = 1; i <= n; i++) {
int d = a[i - 1] - '0' + b[i - 1] - '0';
for (int carry = 0; carry < 2; carry++) {
if ((d + carry)%10 == c[i - 1] - '0') {
dp[i][carry] = dp[i - 1][d + carry >= 10 ? 1 : 0];
if (d + carry < 10) {
dp[i][carry]++;
}
}
}
ans += dp[i][0];
}
cout << ans << endl;
}
int32_t main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
solve();
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 | #include <bits/stdc++.h> using namespace std; #define int long long const int oo = 1e9 + 7; void solve() { string a, b, c; cin >> a >> b >> c; int n = (int)a.size(); vector dp(n+1, vector<int>(2)); int ans = 0; for (int i = 1; i <= n; i++) { int d = a[i - 1] - '0' + b[i - 1] - '0'; for (int carry = 0; carry < 2; carry++) { if ((d + carry)%10 == c[i - 1] - '0') { dp[i][carry] = dp[i - 1][d + carry >= 10 ? 1 : 0]; if (d + carry < 10) { dp[i][carry]++; } } } ans += dp[i][0]; } cout << ans << endl; } int32_t main(){ ios_base::sync_with_stdio(0); cin.tie(0); solve(); return 0; } |
English