From 8f53e809e312021596be70317ea053e5bec6c816 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Mon, 6 Jan 2025 13:58:31 +0100 Subject: aoc 2015, day 25 --- 2015/src/day25.cpp | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 2015/src/day25.cpp (limited to '2015/src') diff --git a/2015/src/day25.cpp b/2015/src/day25.cpp new file mode 100644 index 0000000..ed02c9b --- /dev/null +++ b/2015/src/day25.cpp @@ -0,0 +1,53 @@ +#include +#include +#include +#include +using namespace std; + +tuple +read_file(string_view filename) +{ + fstream input{ filename }; + + vector values; + for ( string word; input >> word; ) { + long value{}; + if ( stringstream(word) >> value ) { + values.push_back(value); + } + } + return { values.at(0), values.at(1) }; +} + +long +triangle_num(long row, long col) +{ + const auto side = row + col - 1; + return (side * (side + 1)) / 2 - row; +} + +long +powmod(long base, long pow, long mod) +{ + long result = 0; + for ( result = 1; pow != 0; pow /= 2 ) { + if ( pow % 2 == 1 ) { + result = (result * base) % mod; + } + base = (base * base) % mod; + } + return result; +} + +void +part1(long row, long col) +{ + cout << (powmod(252533, triangle_num(row, col), 33554393) * 20151125) % 33554393 << endl; +} + +int +main() +{ + const auto [row, col] = read_file("data/day25.txt"); + part1(row, col); +} -- cgit v1.3