#include <bits/stdc++.h>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
string ciag_a, ciag_b, ciag_sum;
cin >> ciag_a >> ciag_b >> ciag_sum;
const int length = ciag_a.size();
long long ans = 0;
long long act_end[2] = {0, 0};
for (int pos = length - 1; pos >= 0; pos--) {
int cyfra_a = ciag_a[pos] - '0';
int cyfra_b = ciag_b[pos] - '0';
int cyfra_sum = ciag_sum[pos] - '0';
long long managed[2] = {0, 0};
for (int carry = 0; carry <= 1; carry++) {
int col_tot = cyfra_a + cyfra_b + carry;
if (col_tot % 10 == cyfra_sum) {
int carry_l = col_tot / 10;
managed[carry_l] += act_end[carry];
if (carry == 0) managed[carry_l]++;
}
}
act_end[0] = managed[0];
act_end[1] = managed[1];
ans += act_end[0];
}
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 | #include <bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); string ciag_a, ciag_b, ciag_sum; cin >> ciag_a >> ciag_b >> ciag_sum; const int length = ciag_a.size(); long long ans = 0; long long act_end[2] = {0, 0}; for (int pos = length - 1; pos >= 0; pos--) { int cyfra_a = ciag_a[pos] - '0'; int cyfra_b = ciag_b[pos] - '0'; int cyfra_sum = ciag_sum[pos] - '0'; long long managed[2] = {0, 0}; for (int carry = 0; carry <= 1; carry++) { int col_tot = cyfra_a + cyfra_b + carry; if (col_tot % 10 == cyfra_sum) { int carry_l = col_tot / 10; managed[carry_l] += act_end[carry]; if (carry == 0) managed[carry_l]++; } } act_end[0] = managed[0]; act_end[1] = managed[1]; ans += act_end[0]; } cout << ans << "\n"; return 0; } |
English