From 3418444a8da97e5a05f87f9737bed94edd43ec60 Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Wed, 11 Dec 2024 07:03:12 +0100 Subject: Day 11 2024 --- 2024/11/day11a.cpp | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 2024/11/day11a.cpp (limited to '2024/11/day11a.cpp') diff --git a/2024/11/day11a.cpp b/2024/11/day11a.cpp new file mode 100644 index 0000000..50c3ebf --- /dev/null +++ b/2024/11/day11a.cpp @@ -0,0 +1,57 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +using namespace std; + +pair split(uint64_t a) { + int digits = 0; + for (uint64_t b = a; b != 0; b /= 10) + digits++; + + if (digits % 2 == 1) + return make_pair(0, 0); + + uint64_t j = 1; + for (int k = 0; k < digits/2; k++) + j *= 10; + + return make_pair(a/j, a%j); +} + +uint64_t count(uint64_t a, int n) { + if (n == 0) + return 1; + + if (a == 0) + return count(1, n-1); + + if (auto [x, y] = split(a); x != 0) { + auto c1 = count(x, n-1); + auto c2 = count(y, n-1); + return c1+c2; + } + + return count(a*2024, n-1); +} + +int main() { + uint64_t x; + vector old, v; + while (cin >> x) + v.push_back(x); + + uint64_t tot = 0; + for (auto a : v) + tot += count(a, 25); + + cout << tot << endl; + + return 0; +} -- cgit v1.3