#include <iostream>
#include<vector>
#include <string>
std::vector<int> my_get_line() {
std::string s;
std::cin >> s;
std::vector<int> result;
for (const char c : s) {
result.emplace_back(c - '0');
}
return result;
}
int main() {
const auto a = my_get_line();
const auto b = my_get_line();
const auto c = my_get_line();
int64_t starting_pairs = 0;
int addone = 0;
int64_t result = 0;
for (int i = a.size() - 1; i >= 0; i--) {
// std::cout << i << ' ' << a[i] << ' ' << b[i] << ' ' << c[i] << '\n';
if (addone == 0) {
if (a[i] + b[i] == c[i]) {
result += starting_pairs + 1;
starting_pairs++;
} else {
if (a[i] + b[i] == 10 + c[i]) {
addone = 1;
starting_pairs++;
} else {
starting_pairs = 0;
addone = (a[i] + b[i]) / 10;
}
}
} else { // addone = 1
if (a[i] + b[i] == c[i]) {
result++;
addone = 0;
starting_pairs = 1;
} else if (a[i] + b[i] == c[i] + 10) {
addone = 1;
starting_pairs = 1;
} else if (a[i] + b[i] + 1 == c[i]) {
addone = 0;
result += starting_pairs;
} else if (a[i] + b[i] + 1 == c[i] + 10) {
addone = 1;
} else {
starting_pairs = 0;
addone = (a[i] + b[i]) / 10;
}
}
}
std::cout << result << '\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 | #include <iostream> #include<vector> #include <string> std::vector<int> my_get_line() { std::string s; std::cin >> s; std::vector<int> result; for (const char c : s) { result.emplace_back(c - '0'); } return result; } int main() { const auto a = my_get_line(); const auto b = my_get_line(); const auto c = my_get_line(); int64_t starting_pairs = 0; int addone = 0; int64_t result = 0; for (int i = a.size() - 1; i >= 0; i--) { // std::cout << i << ' ' << a[i] << ' ' << b[i] << ' ' << c[i] << '\n'; if (addone == 0) { if (a[i] + b[i] == c[i]) { result += starting_pairs + 1; starting_pairs++; } else { if (a[i] + b[i] == 10 + c[i]) { addone = 1; starting_pairs++; } else { starting_pairs = 0; addone = (a[i] + b[i]) / 10; } } } else { // addone = 1 if (a[i] + b[i] == c[i]) { result++; addone = 0; starting_pairs = 1; } else if (a[i] + b[i] == c[i] + 10) { addone = 1; starting_pairs = 1; } else if (a[i] + b[i] + 1 == c[i]) { addone = 0; result += starting_pairs; } else if (a[i] + b[i] + 1 == c[i] + 10) { addone = 1; } else { starting_pairs = 0; addone = (a[i] + b[i]) / 10; } } } std::cout << result << '\n'; } |
English