結果

問題 No.3027 f-列とh-列
ユーザー atcoder8
提出日時 2025-02-21 21:47:21
言語 Rust
(1.83.0 + proconio)
結果
AC  
実行時間 1 ms / 2,000 ms
コード長 722 bytes
コンパイル時間 12,754 ms
コンパイル使用メモリ 401,092 KB
実行使用メモリ 6,820 KB
最終ジャッジ日時 2025-02-21 21:47:40
合計ジャッジ時間 13,944 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 21
権限があれば一括ダウンロードができます

ソースコード

diff #

use proconio::input;

fn main() {
    input! {
        n: usize,
        ff: [i128; n + 1],
    }

    let mut fac = vec![1_i128; n + 2];
    for i in 0..n + 1 {
        fac[i + 1] = fac[i] * (i as i128 + 1);
    }

    let calc_combinations = |n: usize, k: usize| fac[n] / (fac[k] * fac[n - k]);

    let mut hh = vec![0_i128; n + 1];
    for (i, &f) in ff.iter().enumerate() {
        let exp = n - i;
        for j in 0..=exp {
            let sign = if (exp - j) % 2 == 0 { 1 } else { -1 };
            hh[n - j] += f * sign * calc_combinations(exp, j);
        }
    }

    println!(
        "{}",
        hh.iter()
            .map(|h| h.to_string())
            .collect::<Vec<_>>()
            .join(" ")
    );
}
0