AtCoder Beginner Contest 275 D(3)

https://atcoder.jp/contests/abc275/tasks/abc275_d

memoizeというcrateを使えば簡単です。
ただ、AtCoderでは使えないようです。

// Yet Another Recursive Function
#![allow(non_snake_case)]

use memoize::memoize;

fn read<T: std::str::FromStr>() -> T {
    let mut line = String::new();
    std::io::stdin().read_line(&mut line).ok();
    line.trim().parse().ok().unwrap()
}

#[memoize]
fn f(N: usize) -> usize {
    if N == 0 {
        1
    }
    else {
        f(N/2) + f(N/3)
    }
}

fn main() {
    let N = read();
    println!("{}", f(N))
}