結果
| 問題 | No.2207 pCr検査 |
| コンテスト | |
| ユーザー |
zaichu
|
| 提出日時 | 2023-02-05 10:50:32 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,328 bytes |
| 記録 | |
| コンパイル時間 | 14,884 ms |
| コンパイル使用メモリ | 387,996 KB |
| 実行使用メモリ | 6,948 KB |
| 最終ジャッジ日時 | 2024-07-04 01:46:52 |
| 合計ジャッジ時間 | 22,125 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | WA * 2 |
| other | WA * 30 |
ソースコード
use std::collections::HashMap;
fn factorial(n: usize) -> usize {
(1..=n).product()
}
fn binomial_coefficient(p: usize, r: usize) -> usize {
factorial(p) / (factorial(r) * factorial(p - r))
}
fn prime_factors(n: usize, factors: &mut HashMap<usize, usize>) {
let mut n = n;
let mut i = 2;
while i * i <= n {
while n % i == 0 {
*factors.entry(i).or_default() += 1;
n /= i;
}
i += 1;
}
if n > 1 {
*factors.entry(n).or_default() += 1;
}
}
fn is_binomial_coefficient_possible(p: usize, r: usize, n: usize) -> bool {
let mut factors = HashMap::new();
for i in r + 1..=p {
prime_factors(i, &mut factors);
}
for i in 2..=p - r {
prime_factors(i, &mut factors);
}
for (&prime, &count) in &factors {
if count > n / prime {
return false;
}
}
true
}
fn main() {
let n = 10;
let mut found = false;
for p in 2.. {
for r in 0..=p {
if binomial_coefficient(p, r) == n {
if is_binomial_coefficient_possible(p, r, n) {
println!("p: {}, r: {}", p, r);
found = true;
break;
}
}
}
if found {
break;
}
}
}
zaichu