結果
問題 | No.2867 NOT FOUND 404 Again |
ユーザー | magurofly |
提出日時 | 2024-08-30 22:10:44 |
言語 | Rust (1.77.0 + proconio) |
結果 |
AC
|
実行時間 | 211 ms / 3,000 ms |
コード長 | 1,507 bytes |
コンパイル時間 | 13,251 ms |
コンパイル使用メモリ | 402,244 KB |
実行使用メモリ | 14,796 KB |
最終ジャッジ日時 | 2024-08-30 22:11:01 |
合計ジャッジ時間 | 16,867 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 1 ms
6,820 KB |
testcase_01 | AC | 1 ms
6,944 KB |
testcase_02 | AC | 1 ms
6,940 KB |
testcase_03 | AC | 161 ms
14,592 KB |
testcase_04 | AC | 158 ms
14,620 KB |
testcase_05 | AC | 159 ms
14,588 KB |
testcase_06 | AC | 159 ms
14,612 KB |
testcase_07 | AC | 159 ms
14,772 KB |
testcase_08 | AC | 159 ms
14,656 KB |
testcase_09 | AC | 158 ms
14,708 KB |
testcase_10 | AC | 159 ms
14,508 KB |
testcase_11 | AC | 159 ms
14,644 KB |
testcase_12 | AC | 158 ms
14,604 KB |
testcase_13 | AC | 157 ms
14,780 KB |
testcase_14 | AC | 157 ms
14,556 KB |
testcase_15 | AC | 161 ms
14,568 KB |
testcase_16 | AC | 160 ms
14,796 KB |
testcase_17 | AC | 159 ms
14,624 KB |
testcase_18 | AC | 116 ms
14,568 KB |
testcase_19 | AC | 211 ms
14,564 KB |
コンパイルメッセージ
warning: variable `N` should have a snake case name --> src/main.rs:7:9 | 7 | N: Chars, | ^ help: convert the identifier to snake case: `n` | = note: `#[warn(non_snake_case)]` on by default warning: variable `N` should have a snake case name --> src/main.rs:10:9 | 10 | let N = N.into_iter().map(|x| x.to_digit(10).unwrap() as usize ).collect::<Vec<_>>(); | ^ help: convert the identifier to snake case: `n`
ソースコード
use proconio::{input, marker::Chars}; const MOD: usize = 998244353; fn main() { input! { N: Chars, } let N = N.into_iter().map(|x| x.to_digit(10).unwrap() as usize ).collect::<Vec<_>>(); fn trans(state: usize, digit: usize) -> usize { match (state, digit) { (0, 4) => 1, (1, 0) => 2, (1, 4) => 1, (2, 4) => 3, _ => 0 } } let mut eq = [0; 4]; let mut lt = [0; 4]; eq[0] = 1; for digit in N { let mut eq_next = [0; 4]; let mut lt_next = [0; 4]; // lt -> lt for d in 0 ..= 9 { for state in 0 .. 3 { let state_next = trans(state, d); lt_next[state_next] += lt[state]; lt_next[state_next] %= MOD; } } // eq -> lt for d in 0 .. digit { for state in 0 .. 3 { let state_next = trans(state, d); lt_next[state_next] += eq[state]; lt_next[state_next] %= MOD; } } // eq -> eq { let d = digit; for state in 0 .. 3 { let state_next = trans(state, d); eq_next[state_next] += eq[state]; eq_next[state_next] %= MOD; } } eq = eq_next; lt = lt_next; } let ans = (eq[0] + eq[1] + eq[2] + lt[0] + lt[1] + lt[2] + MOD - 1) % MOD; println!("{ans}"); }