Finished abc050
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user