結果
問題 | No.1552 Simple Dice Game |
ユーザー | unyon_maru65536 |
提出日時 | 2021-06-18 21:08:26 |
言語 | Rust (1.77.0 + proconio) |
結果 |
AC
|
実行時間 | 261 ms / 2,500 ms |
コード長 | 2,026 bytes |
コンパイル時間 | 20,466 ms |
コンパイル使用メモリ | 386,588 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-22 19:40:12 |
合計ジャッジ時間 | 14,957 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 1 ms
6,816 KB |
testcase_01 | AC | 1 ms
6,816 KB |
testcase_02 | AC | 0 ms
6,812 KB |
testcase_03 | AC | 215 ms
6,944 KB |
testcase_04 | AC | 1 ms
6,940 KB |
testcase_05 | AC | 1 ms
6,944 KB |
testcase_06 | AC | 1 ms
6,944 KB |
testcase_07 | AC | 1 ms
6,944 KB |
testcase_08 | AC | 1 ms
6,940 KB |
testcase_09 | AC | 186 ms
6,940 KB |
testcase_10 | AC | 215 ms
6,944 KB |
testcase_11 | AC | 224 ms
6,940 KB |
testcase_12 | AC | 66 ms
6,940 KB |
testcase_13 | AC | 183 ms
6,940 KB |
testcase_14 | AC | 112 ms
6,944 KB |
testcase_15 | AC | 131 ms
6,940 KB |
testcase_16 | AC | 19 ms
6,940 KB |
testcase_17 | AC | 33 ms
6,940 KB |
testcase_18 | AC | 175 ms
6,940 KB |
testcase_19 | AC | 248 ms
6,940 KB |
testcase_20 | AC | 254 ms
6,944 KB |
testcase_21 | AC | 256 ms
6,944 KB |
testcase_22 | AC | 261 ms
6,944 KB |
testcase_23 | AC | 256 ms
6,944 KB |
コンパイルメッセージ
warning: variable does not need to be mutable --> src/main.rs:56:17 | 56 | let mut t = pow_mod(n, k / 2, m); | ----^ | | | help: remove this `mut` | = note: `#[warn(unused_mut)]` on by default warning: variable does not need to be mutable --> src/main.rs:7:13 | 7 | let mut s = { | ----^ | | | help: remove this `mut` ... 67 | / input! { 68 | | N: usize, 69 | | M: usize, 70 | | } | |_____- in this macro invocation | = note: this warning originates in the macro `input` (in Nightly builds, run with -Z macro-backtrace for more info) warning: variable `N` should have a snake case name --> src/main.rs:68:9 | 68 | 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:69:9 | 69 | M: usize, | ^ help: convert the identifier to snake case: `m`
ソースコード
macro_rules! input { (source = $s:expr, $($r:tt)*) => { let mut iter = $s.split_whitespace(); input_inner!{iter, $($r)*} }; ($($r:tt)*) => { let mut s = { use std::io::Read; let mut s = String::new(); std::io::stdin().read_to_string(&mut s).unwrap(); s }; let mut iter = s.split_whitespace(); input_inner!{iter, $($r)*} }; } macro_rules! input_inner { ($iter:expr) => {}; ($iter:expr, ) => {}; ($iter:expr, $var:ident : $t:tt $($r:tt)*) => { let $var = read_value!($iter, $t); input_inner!{$iter $($r)*} }; } macro_rules! read_value { ($iter:expr, ( $($t:tt),* )) => { ( $(read_value!($iter, $t)),* ) }; ($iter:expr, [ $t:tt ; $len:expr ]) => { (0..$len).map(|_| read_value!($iter, $t)).collect::<Vec<_>>() }; ($iter:expr, chars) => { read_value!($iter, String).chars().collect::<Vec<char>>() }; ($iter:expr, usize1) => { read_value!($iter, usize) - 1 }; ($iter:expr, $t:ty) => { $iter.next().unwrap().parse::<$t>().expect("Parse error") }; } 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); }