library_checker/math/
discrete_logarithm_mod.rs

1#[doc(no_inline)]
2pub use competitive::math::discrete_logarithm;
3use competitive::prelude::*;
4
5#[verify::library_checker("discrete_logarithm_mod")]
6pub fn discrete_logarithm_mod(reader: impl Read, mut writer: impl Write) {
7    let s = read_all_unchecked(reader);
8    let mut scanner = Scanner::new(&s);
9    scan!(scanner, t, query: [(u64, u64, u64)]);
10    for (x, y, m) in query.take(t) {
11        let ans = discrete_logarithm(x, y, m).map(|k| k as i64).unwrap_or(-1);
12        writeln!(writer, "{}", ans).ok();
13    }
14}