This commit is contained in:
Glenn Griffin 2020-12-24 21:29:17 -08:00
parent c9e4d63abe
commit c07c38f17a
3 changed files with 36 additions and 0 deletions

2
input/2020/day25.txt Normal file
View File

@ -0,0 +1,2 @@
17773298
15530095

33
src/day25.rs Normal file
View File

@ -0,0 +1,33 @@
use crate::split_once;
use aoc_runner_derive::aoc;
const MOD: usize = 20201227;
#[aoc(day25, part1)]
fn solve_d25_p1(input: &str) -> usize {
let (pubkey1, pubkey2) = split_once(input, "\n").unwrap();
let pubkey1: usize = pubkey1.parse().unwrap();
let pubkey2: usize = pubkey2.parse().unwrap();
let loop_size = loop_size_from_pubkey(pubkey1);
encryption_key_from_pubkey(pubkey2, loop_size)
}
fn encryption_key_from_pubkey(pubkey: usize, loop_size: usize) -> usize {
let mut value = 1;
for _ in 0..loop_size {
value *= pubkey;
value %= MOD;
}
value
}
fn loop_size_from_pubkey(pubkey: usize) -> usize {
let mut loop_size = 0;
let mut value = 1;
while value != pubkey {
loop_size += 1;
value *= 7;
value %= MOD;
}
loop_size
}

View File

@ -15,6 +15,7 @@ pub mod day21;
pub mod day22;
pub mod day23;
pub mod day24;
pub mod day25;
pub mod day3;
pub mod day4;
pub mod day5;