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