https://atcoder.jp/contests/math-and-algorithm/tasks/math_and_algorithm_z
N種類だったとして最初に1種類目が出るまで1回、次の種類が出る確率は(N-1)/Nなので、次の種類が出るまでの回数の期待値はN/(N-1)、その次の種類が出る確率は(N-2)/Nなので、次の種類が出るまでの回数の期待値はN/(N-2)、などとなり、全種類が出るまでの回数の期待値は、
となります。
// Coin Gacha #![allow(non_snake_case)] 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() } fn f(N: i32) -> f64 { (1..(N+1)).map(|n| (N as f64) / (n as f64)).sum::<f64>() } fn main() { let N: i32 = read(); println!("{}", f(N)) }