From 4dcbc0f431950ed73ff728745d6e50b3a278e197 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 19 May 2025 22:59:58 +0100 Subject: [PATCH] 2016: d19: ex1: add solution --- 2016/d19/ex1/ex1.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100755 2016/d19/ex1/ex1.py diff --git a/2016/d19/ex1/ex1.py b/2016/d19/ex1/ex1.py new file mode 100755 index 0000000..bcf2158 --- /dev/null +++ b/2016/d19/ex1/ex1.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python + +import sys + + +def solve(input: str) -> int: + def msb(n: int) -> int: + assert n # Sanity check + return n.bit_length() - 1 + + # https://en.wikipedia.org/wiki/Josephus_problem + def josephus(n: int) -> int: + return 2 * (n - (1 << msb(n))) + 1 + + num_elves = int(input.strip()) + return josephus(num_elves) + + +def main() -> None: + input = sys.stdin.read() + print(solve(input)) + + +if __name__ == "__main__": + main()