アルゴリズムと数学 081

https://atcoder.jp/contests/math-and-algorithm/tasks/math_and_algorithm_bm

倍数、倍数の関係になっているので、上位の札から枚数を数えていくだけですね。

// Bill Changing Problem
#![allow(non_snake_case)]


//////////////////// library ////////////////////

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()
}


//////////////////// process ////////////////////

fn f(N: i64) -> i64 {
    let n1 = N / 10000;
    let r1 = N % 10000;
    let n2 = r1 / 5000;
    let r2 = r1 % 5000;
    let n3 = r2 / 1000;
    n1 + n2 + n3
}

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