Finished abc050
This commit is contained in:
@@ -1,3 +1,38 @@
|
||||
fn main() {
|
||||
unimplemented!();
|
||||
use std::collections::HashMap;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user