#include <iostream>
#include <string>
#include <numeric> // accumulate
bool halvesSumEqual(long long n) {
std::string s = std::to_string(std::llabs(n));
if (s.size() % 2 != 0)
return false;
std::size_t half = s.size() / 2;
auto sumDigits = [](const std::string& part) {
return std::accumulate(part.begin(), part.end(), 0,
[](int acc, char c) { return acc + (c - '0'); });
};
int left = sumDigits(s.substr(0, half));
int right = sumDigits(s.substr(half));
return left == right;
}
int main() {
long long nums[] = {123456, 123321, 123123, 123411, 1234321, 12321};
for (auto n : nums) {
std::cout << n << ": "
<< std::boolalpha
<< halvesSumEqual(n)
<< "\n";
}
}
/*
run:
123456: false
123321: true
123123: true
123411: true
1234321: false
12321: false
*/