結果
問題 | No.1552 Simple Dice Game |
ユーザー |
![]() |
提出日時 | 2021-06-18 21:06:35 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 266 ms / 2,500 ms |
コード長 | 884 bytes |
コンパイル時間 | 13,784 ms |
コンパイル使用メモリ | 396,396 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-22 19:39:30 |
合計ジャッジ時間 | 18,311 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 20 |
コンパイルメッセージ
warning: unused import: `fastout` --> src/main.rs:1:16 | 1 | use proconio::{fastout, input}; | ^^^^^^^ | = note: `#[warn(unused_imports)]` on by default warning: variable does not need to be mutable --> src/main.rs:9:17 | 9 | let mut t = pow_mod(n, k / 2, m); | ----^ | | | help: remove this `mut` | = note: `#[warn(unused_mut)]` on by default warning: variable `N` should have a snake case name --> src/main.rs:21:9 | 21 | N: usize, | ^ help: convert the identifier to snake case: `n` | = note: `#[warn(non_snake_case)]` on by default warning: variable `M` should have a snake case name --> src/main.rs:22:9 | 22 | M: usize, | ^ help: convert the identifier to snake case: `m`
ソースコード
use proconio::{fastout, input};const MOD: usize = 998244353;fn pow_mod(n: usize, k: usize, m: usize) -> usize {match k {0 => 1,_ if k % 2 == 0 => {let mut t = pow_mod(n, k / 2, m);(t * t) % m}_ => (pow_mod(n, k - 1, m) * n) % m,}}fn main(){input! {N: usize,M: usize,}let mut p_mod = vec![0;500005];for i in 0..M+1{p_mod[i] = pow_mod(i,N,MOD);}let mut ans = 0;for d in 1..M{let mut tmp = p_mod[d + 1] + 2*(MOD - p_mod[d]) + p_mod[d - 1];tmp %= MOD;tmp = (tmp * d) % MOD;tmp = (tmp * (M - d)) % MOD;ans += tmp;ans %= MOD;}let mut n = N;n %= MOD;ans *= n;ans %= MOD;ans *= M + 1;ans %= MOD;ans *= 499122177;ans %= MOD;println!("{}",ans);}