結果

問題 No.2207 pCr検査
コンテスト
ユーザー zaichu
提出日時 2023-02-05 10:52:54
言語 Rust
(1.93.0 + proconio + num + itertools)
コンパイル:
/usr/bin/rustc_custom
実行:
./target/release/main
結果
WA  
実行時間 -
コード長 1,232 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 1,080 ms
コンパイル使用メモリ 194,048 KB
実行使用メモリ 8,448 KB
最終ジャッジ日時 2026-03-25 09:58:33
合計ジャッジ時間 38,528 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge3_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample WA * 2
other WA * 22 TLE * 8
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

use std::collections::HashMap;

fn main() {
    let n = read_input();
    let factorization = factorize(n);
    let mut p_candidates = HashMap::new();

    for (p, e) in factorization.iter() {
        for i in 0..=*e {
            let c = comb(*p as i64, i as i64);
            *p_candidates.entry(c).or_insert(0) += 1;
        }
    }

    for (p, e) in factorization.iter() {
        if p_candidates.contains_key(p) && *p_candidates.get(p).unwrap() == *e as usize {
            println!("{} {}", p, e);
            return;
        }
    }

    println!("-1 -1");
}

fn read_input() -> i64 {
    let mut input = String::new();
    std::io::stdin().read_line(&mut input).unwrap();
    let n = input.trim().parse::<i64>().unwrap();
    n
}

fn factorize(n: i64) -> HashMap<i64, i64> {
    let mut factorization = HashMap::new();
    let mut n = n;

    for i in 2.. {
        if n == 1 {
            break;
        }

        if n % i == 0 {
            *factorization.entry(i as i64).or_insert(0) += 1;
            n /= i;
        }
    }

    factorization
}

fn comb(n: i64, r: i64) -> i64 {
    if r > n {
        return 0;
    }

    let mut res = 1;

    for i in 0..r {
        res = res * (n - i) / (i + 1);
    }

    res
}
0