結果
問題 | No.1809 Divide NCK |
ユーザー | phspls |
提出日時 | 2022-09-29 00:33:19 |
言語 | Rust (1.77.0 + proconio) |
結果 |
AC
|
実行時間 | 12 ms / 2,000 ms |
コード長 | 1,202 bytes |
コンパイル時間 | 11,587 ms |
コンパイル使用メモリ | 401,496 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-02 01:46:05 |
合計ジャッジ時間 | 13,141 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 1 ms
6,812 KB |
testcase_01 | AC | 5 ms
6,812 KB |
testcase_02 | AC | 1 ms
6,816 KB |
testcase_03 | AC | 1 ms
6,944 KB |
testcase_04 | AC | 1 ms
6,944 KB |
testcase_05 | AC | 1 ms
6,940 KB |
testcase_06 | AC | 1 ms
6,940 KB |
testcase_07 | AC | 1 ms
6,940 KB |
testcase_08 | AC | 1 ms
6,944 KB |
testcase_09 | AC | 1 ms
6,944 KB |
testcase_10 | AC | 1 ms
6,944 KB |
testcase_11 | AC | 5 ms
6,940 KB |
testcase_12 | AC | 5 ms
6,944 KB |
testcase_13 | AC | 2 ms
6,944 KB |
testcase_14 | AC | 3 ms
6,944 KB |
testcase_15 | AC | 1 ms
6,944 KB |
testcase_16 | AC | 12 ms
6,944 KB |
testcase_17 | AC | 1 ms
6,940 KB |
testcase_18 | AC | 11 ms
6,944 KB |
testcase_19 | AC | 11 ms
6,940 KB |
testcase_20 | AC | 4 ms
6,944 KB |
testcase_21 | AC | 4 ms
6,944 KB |
testcase_22 | AC | 1 ms
6,940 KB |
testcase_23 | AC | 1 ms
6,944 KB |
testcase_24 | AC | 1 ms
6,940 KB |
testcase_25 | AC | 1 ms
6,944 KB |
testcase_26 | AC | 1 ms
6,940 KB |
testcase_27 | AC | 1 ms
6,940 KB |
testcase_28 | AC | 1 ms
6,940 KB |
testcase_29 | AC | 9 ms
6,944 KB |
testcase_30 | AC | 5 ms
6,940 KB |
testcase_31 | AC | 1 ms
6,944 KB |
testcase_32 | AC | 4 ms
6,940 KB |
testcase_33 | AC | 7 ms
6,940 KB |
testcase_34 | AC | 4 ms
6,944 KB |
testcase_35 | AC | 4 ms
6,944 KB |
testcase_36 | AC | 3 ms
6,940 KB |
testcase_37 | AC | 5 ms
6,940 KB |
testcase_38 | AC | 3 ms
6,944 KB |
testcase_39 | AC | 5 ms
6,940 KB |
testcase_40 | AC | 5 ms
6,940 KB |
testcase_41 | AC | 4 ms
6,940 KB |
ソースコード
use std::collections::HashMap; fn main() { let mut nkm = String::new(); std::io::stdin().read_line(&mut nkm).ok(); let nkm: Vec<usize> = nkm.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let n = nkm[0]; let k = nkm[1]; let m = nkm[2]; let mut factors = HashMap::new(); let mut base = m; for i in 2..=(m as f64).sqrt().floor() as usize { while base % i == 0 { base /= i; *factors.entry(i).or_insert(0usize) += 1; } } if base > 1 { factors.insert(base, 1); } let startn = n - k; let endn = n; let startd = 0; let endd = k; let mut result = 1usize << 60; for (&val, &cnt) in factors.iter() { let mut num_cnt = 0usize; let mut denom_cnt = 0usize; let mut base = val; while endd / base > startd / base { denom_cnt += endd / base - startd / base; base *= val; } let mut base = val; while endn / base > startn / base { num_cnt += endn / base - startn / base; base *= val; } result = result.min((num_cnt - denom_cnt) / cnt); } println!("{}", result); }