結果
| 問題 |
No.2019 Digits Filling for All Substrings
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2022-07-23 00:23:24 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 22 ms / 2,000 ms |
| コード長 | 757 bytes |
| コンパイル時間 | 2,907 ms |
| コンパイル使用メモリ | 199,120 KB |
| 最終ジャッジ日時 | 2025-01-30 13:10:37 |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 30 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
#ifdef _RUTHEN
#include "debug.hpp"
#else
#define show(...) true
#endif
using ll = long long;
#define rep(i, n) for (int i = 0; i < (n); i++)
template <class T> using V = vector<T>;
#include <atcoder/modint>
using mint = atcoder::modint998244353;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int N;
string S;
cin >> N >> S;
V<mint> dp(3, 0);
mint ans = 0;
rep(i, N) {
V<mint> np(3, 0);
for (int d = (S[i] == '?' ? 0 : S[i] - '0'); d <= (S[i] == '?' ? 9 : S[i] - '0'); d++) {
rep(j, 3) np[(d + j) % 3] += dp[j];
np[d % 3]++;
}
ans += np[0];
dp = np;
}
cout << ans.val() << '\n';
return 0;
}