29 lines
654 B
Rust
29 lines
654 B
Rust
use std::io::{read_to_string, stdin};
|
|
|
|
fn main() {
|
|
let temp = read_to_string(stdin()).unwrap();
|
|
let mut iter = temp
|
|
.split_ascii_whitespace()
|
|
.map(|x| x.parse::<usize>().unwrap());
|
|
|
|
let (n, m) = (iter.next().unwrap(), iter.next().unwrap());
|
|
|
|
let mut cumf = 2 % m;
|
|
let (mut f1, mut f2) = (1 % m, 1 % m);
|
|
|
|
if n == 1 {
|
|
println!("{}", f1);
|
|
} else if n == 2 {
|
|
println!("{}", cumf);
|
|
} else {
|
|
for _ in 3..=n {
|
|
let newf = (f2 + f1) % m;
|
|
cumf += newf;
|
|
cumf %= m;
|
|
f1 = f2;
|
|
f2 = newf;
|
|
}
|
|
println!("{}", cumf);
|
|
}
|
|
}
|