結果

問題 No.2176 LRM Question 1
ユーザー atcoder8atcoder8
提出日時 2023-01-06 21:43:50
言語 Rust
(1.83.0 + proconio)
結果
AC  
実行時間 33 ms / 2,000 ms
コード長 807 bytes
コンパイル時間 13,368 ms
コンパイル使用メモリ 377,604 KB
実行使用メモリ 9,856 KB
最終ジャッジ日時 2024-11-30 17:35:09
合計ジャッジ時間 13,645 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 22
権限があれば一括ダウンロードができます

ソースコード

diff #

fn main() {
    println!("{}", solve());
}

fn solve() -> usize {
    let (l, r, m) = {
        let mut line = String::new();
        std::io::stdin().read_line(&mut line).unwrap();
        let mut iter = line.split_whitespace();
        (
            iter.next().unwrap().parse::<usize>().unwrap(),
            iter.next().unwrap().parse::<usize>().unwrap(),
            iter.next().unwrap().parse::<usize>().unwrap(),
        )
    };

    if l >= m {
        return 0;
    }

    let mut fac = vec![1];
    for i in 1..=r.min(m - 1) {
        fac.push(*fac.last().unwrap() * i % m);
    }

    let mut ret = 0;
    let mut mul = 1;

    for i in 0..l {
        mul = mul * fac[i] % m;
    }

    for i in l..=r.min(m - 1) {
        mul = mul * fac[i] % m;
        ret = (ret + mul) % m;
    }

    ret
}
0