1111gal password
問題
C – 1111gal password
プログラミング初級者から上級者まで楽しめる、競技プログラミングコンテストサイト「AtCoder」。オンラインで毎週開催プログラミングコンテストを開催しています。競技…
記録
- 2022/3/5 リアルタイム参加。解法わからず。
解法
DP
コード例
#include <bits/stdc++.h> using namespace std; #include <atcoder/all> using namespace atcoder; using ll = long long; using P = pair<int, int>; #define rep(i, n) for(int i = 0; i < (n); ++i) // using mint = modint998244353; // using mint = modint1000000007; const int mod = 998244353; // const int mod = 1000000007; // const ll INF = 1LL << 62; // const int INF = 1001001001; ll dp[1000100][9]; int main() { ll N; cin >> N; for(int i = 0; i < 9; ++i) { dp[0][i] = 1; } for(int i = 1; i < N; ++i) { for(int j = 0; j < 9; ++j) { if(j == 0) { dp[i][j] += dp[i - 1][j]; dp[i][j] += dp[i - 1][j + 1]; } else if(j == 8) { dp[i][j] += dp[i - 1][j - 1]; dp[i][j] += dp[i - 1][j]; } else { dp[i][j] += dp[i - 1][j - 1]; dp[i][j] += dp[i - 1][j]; dp[i][j] += dp[i - 1][j + 1]; } dp[i][j] %= mod; } } ll ans = 0; for(int i = 0; i < 9; ++i) { ans += dp[N - 1][i]; ans %= mod; } cout << ans << endl; return 0; }