#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
string a, b, c;
cin >> a >> b >> c;
int n = a.size();
ll wyn = 0;
ll A = 0, B = 0;
for (int k = n - 1; k >= 0; k--)
{
int d1 = a[k] - '0';
int d2 = b[k] - '0';
int d3 = c[k] - '0';
int s0 = d1 + d2; // suma z carry_in = 0
int s1 = d1 + d2 + 1; // suma z carry_in = 1
ll newA = 0, newB = 0;
if (s0 % 10 == d3) {
if (s0 / 10 == 0) newA += A; // carry_out = 0: zostają w A
else newB += A; // carry_out = 1: przechodzą do B
}
if (s1 % 10 == d3) {
if (s1 / 10 == 0) newA += B; // carry_out = 0: przechodzą do A
else newB += B; // carry_out = 1: zostają w B
}
if (s0 % 10 == d3) {
if (s0 / 10 == 0) newA += 1;
else newB += 1;
}
A = newA;
B = newB;
wyn += A;
}
cout << wyn << "\n";
}
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 | #include <bits/stdc++.h> using namespace std; using ll = long long; int main() { ios_base::sync_with_stdio(0); cin.tie(0); string a, b, c; cin >> a >> b >> c; int n = a.size(); ll wyn = 0; ll A = 0, B = 0; for (int k = n - 1; k >= 0; k--) { int d1 = a[k] - '0'; int d2 = b[k] - '0'; int d3 = c[k] - '0'; int s0 = d1 + d2; // suma z carry_in = 0 int s1 = d1 + d2 + 1; // suma z carry_in = 1 ll newA = 0, newB = 0; if (s0 % 10 == d3) { if (s0 / 10 == 0) newA += A; // carry_out = 0: zostają w A else newB += A; // carry_out = 1: przechodzą do B } if (s1 % 10 == d3) { if (s1 / 10 == 0) newA += B; // carry_out = 0: przechodzą do A else newB += B; // carry_out = 1: zostają w B } if (s0 % 10 == d3) { if (s0 / 10 == 0) newA += 1; else newB += 1; } A = newA; B = newB; wyn += A; } cout << wyn << "\n"; } |
English