#include <iostream>
#include <string>
#include <vector>
using namespace std;
#define int long long
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
string a, b, c;
cin>>a>>b>>c;
int n = a.size();
int ans = 0;
int dp[2] = {0, 0};
for(int i = n - 1; i >= 0; i--){
int val_a = a[i] - '0';
int val_b = b[i] - '0';
int val_c = c[i] - '0';
int przej[2] = {-1, -1};
for(int j = 0; 2>j; j++){
int sum = val_a + val_b + j;
if(sum % 10 == val_c) przej[j] = sum / 10;
}
int new_dp[2] = {0, 0};
if(przej[0] != -1) new_dp[przej[0]] += 1;
for(int j = 0; 2>j; j++){
if(przej[j] != -1) new_dp[przej[j]] += dp[j];
}
dp[0] = new_dp[0];
dp[1] = new_dp[1];
ans += dp[0];
}
cout<<ans;
}
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 <iostream> #include <string> #include <vector> using namespace std; #define int long long signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); string a, b, c; cin>>a>>b>>c; int n = a.size(); int ans = 0; int dp[2] = {0, 0}; for(int i = n - 1; i >= 0; i--){ int val_a = a[i] - '0'; int val_b = b[i] - '0'; int val_c = c[i] - '0'; int przej[2] = {-1, -1}; for(int j = 0; 2>j; j++){ int sum = val_a + val_b + j; if(sum % 10 == val_c) przej[j] = sum / 10; } int new_dp[2] = {0, 0}; if(przej[0] != -1) new_dp[przej[0]] += 1; for(int j = 0; 2>j; j++){ if(przej[j] != -1) new_dp[przej[j]] += dp[j]; } dp[0] = new_dp[0]; dp[1] = new_dp[1]; ans += dp[0]; } cout<<ans; } |
English