#include <iostream>
using namespace std;
inline int td(char c) {
return c - '0';
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
string a, b, c;
cin >> a >> b >> c;
int d = a.size();
bool potrzebuje_jedynki[d], daje_dziesiatke[d+1], zly[d];
daje_dziesiatke[d] = false;
for(int i = 0; i < d; i++) {
zly[i] = true;
potrzebuje_jedynki[i] = false;
daje_dziesiatke[i] = false;
int suma = td(a[i]) + td(b[i]);
if(suma == 9 && td(c[i]) == 0) {
zly[i] = false;
potrzebuje_jedynki[i] = true;
daje_dziesiatke[i] = true;
continue;
}
if(suma >= 10) {
daje_dziesiatke[i] = true;
if(suma-10 == td(c[i]) || suma-10 == td(c[i])-1)
zly[i] = false;
if(suma-10 == td(c[i])-1)
potrzebuje_jedynki[i] = true;
}
else {
if(suma == td(c[i]) || suma == td(c[i])-1)
zly[i] = false;
if(suma == td(c[i])-1)
potrzebuje_jedynki[i] = true;
}
}
long long acc = 0;
int dostepne_konce = 0;
for(int p = d-1; p >= 0; p--) {
if(zly[p]) {
dostepne_konce = 0;
continue;
}
if(potrzebuje_jedynki[p] != daje_dziesiatke[p+1]) {
dostepne_konce = 0;
}
if(potrzebuje_jedynki[p] == false)
dostepne_konce++;
if(daje_dziesiatke[p] == false)
acc += dostepne_konce;
}
cout << acc << "\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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | #include <iostream> using namespace std; inline int td(char c) { return c - '0'; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); string a, b, c; cin >> a >> b >> c; int d = a.size(); bool potrzebuje_jedynki[d], daje_dziesiatke[d+1], zly[d]; daje_dziesiatke[d] = false; for(int i = 0; i < d; i++) { zly[i] = true; potrzebuje_jedynki[i] = false; daje_dziesiatke[i] = false; int suma = td(a[i]) + td(b[i]); if(suma == 9 && td(c[i]) == 0) { zly[i] = false; potrzebuje_jedynki[i] = true; daje_dziesiatke[i] = true; continue; } if(suma >= 10) { daje_dziesiatke[i] = true; if(suma-10 == td(c[i]) || suma-10 == td(c[i])-1) zly[i] = false; if(suma-10 == td(c[i])-1) potrzebuje_jedynki[i] = true; } else { if(suma == td(c[i]) || suma == td(c[i])-1) zly[i] = false; if(suma == td(c[i])-1) potrzebuje_jedynki[i] = true; } } long long acc = 0; int dostepne_konce = 0; for(int p = d-1; p >= 0; p--) { if(zly[p]) { dostepne_konce = 0; continue; } if(potrzebuje_jedynki[p] != daje_dziesiatke[p+1]) { dostepne_konce = 0; } if(potrzebuje_jedynki[p] == false) dostepne_konce++; if(daje_dziesiatke[p] == false) acc += dostepne_konce; } cout << acc << "\n"; return 0; } |
English