fn power(i: usize, p: usize, c: usize) -> usize { if p == 0 { return 1usize; } if p == 1 { return i; } let temp = power(i, p/2, c); temp * temp * power(i, p%2, c) % c } fn main() { let mut abc = String::new(); std::io::stdin().read_line(&mut abc).ok(); let abc: Vec = abc.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let a = abc[0]; let b = abc[1]; let c = abc[2]; let mut values: Vec = vec![0; c+1]; for i in 1..=c { values[i] = power(i, b, c); } let mut result = 0usize; for i in 1..=a%c { result += values[i]; result %= c; } let times = a / c; for v in values.iter() { result += v * times; result %= c; } println!("{}", result); }