結果
問題 | No.1552 Simple Dice Game |
ユーザー | unyon_maru65536 |
提出日時 | 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); }