Finished abc050

This commit is contained in:
2023-05-01 15:49:18 +02:00
parent 5d6af06d5b
commit adb33aa593

View File

@@ -1,3 +1,38 @@
fn main() { use std::collections::HashMap;
unimplemented!();
use proconio::input;
const MOD: u128 = 1000000007;
fn solve(n: u128, memory: &mut HashMap<u128, u128>) -> u128 {
if n == 0 {
return 1;
} else if n == 1 {
return 2;
}
if let Some(res) = memory.get(&n) {
return *res;
}
if n % 2 == 0 {
let res = (2 * solve(n / 2 - 1, memory) + solve(n / 2, memory)) % MOD;
memory.insert(n, res);
return res;
} else {
let res = (2 * solve(n / 2, memory) + solve(n / 2 - 1, memory)) % MOD;
memory.insert(n, res);
return res;
}
}
fn main() {
input! {
n: u128,
};
let mut memory = HashMap::new();
let result = solve(n, &mut memory);
println!("{}", result);
} }