// Author : Jakub Rozek
// Task : DOD - Dodawanie [C]
// Memory : n
// Time : n
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
struct Column {
int need = 0;
int give = 0;
bool valid = false;
Column(char a_char, char b_char, char c_char) {
int sum = a_char - '0' + b_char - '0';
int c = c_char - '0';
if (c == sum % 10) {
need = 0;
give = sum >= 10;
valid = true;
return;
}
if (c == (sum + 1) % 10) {
need = 1;
give = sum >= 9;
valid = true;
return;
}
}
};
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
string a, b, c;
cin >> a >> b >> c;
int n = (int)a.size();
ll answer = 0;
ll starts = 0;
bool prev_valid = false;
int prev_need = 0;
for (int i=0; i<n; ++i) {
Column col(a[i], b[i], c[i]);
if (!col.valid) {
prev_valid = false;
starts = 0;
continue;
}
if (!prev_valid || col.give != prev_need) {
starts = 0;
}
if (col.give == 0) {
++starts;
}
if (col.need == 0) {
answer += starts;
}
prev_valid = true;
prev_need = col.need;
}
cout << answer << '\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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | // Author : Jakub Rozek // Task : DOD - Dodawanie [C] // Memory : n // Time : n #include <bits/stdc++.h> using namespace std; using ll = long long; struct Column { int need = 0; int give = 0; bool valid = false; Column(char a_char, char b_char, char c_char) { int sum = a_char - '0' + b_char - '0'; int c = c_char - '0'; if (c == sum % 10) { need = 0; give = sum >= 10; valid = true; return; } if (c == (sum + 1) % 10) { need = 1; give = sum >= 9; valid = true; return; } } }; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); string a, b, c; cin >> a >> b >> c; int n = (int)a.size(); ll answer = 0; ll starts = 0; bool prev_valid = false; int prev_need = 0; for (int i=0; i<n; ++i) { Column col(a[i], b[i], c[i]); if (!col.valid) { prev_valid = false; starts = 0; continue; } if (!prev_valid || col.give != prev_need) { starts = 0; } if (col.give == 0) { ++starts; } if (col.need == 0) { answer += starts; } prev_valid = true; prev_need = col.need; } cout << answer << '\n'; } |
English