题目 | 1111gal password
AtCoder Beginner Contest 242
C - 1111gal password
https://atcoder.jp/contests/abc242/tasks/abc242_c
Time Limit: 2 sec / Memory Limit: 1024 MB
Score :
Problem Statement
Given an integer
is an -digit positive integer.Let
be the digits of from top to bottom. They satisfy all of the following: for all integers ; for all integers .
Constraints
is an integer.
Input
Input is given from Standard Input in the following format:
Output
Print the answer as an integer.
Sample Input 1
4
Sample Output 1
203
Some of the
Sample Input 2
2
Sample Output 2
25
Sample Input 3
1000000
Sample Output 3
248860093
Be sure to find the count modulo
我的笔记
用到了动态规划的思想:
这就是状态转移方程,依据此写一个循环即可。
代码
#include <bits/stdc++.h>
#define MOD 998244353
using namespace std;
unsigned long long dp[1000010][10]{};
int main(void)
{
int N;
cin >> N;
for (int i = 1; i <= 9; i++)
dp[1][i] = 1;
for (int i = 2; i <= N; i++)
{
dp[i][1] = dp[i - 1][1] + dp[i - 1][2];
dp[i][1] %= MOD;
for (int j = 2; j <= 8; j++)
{
dp[i][j] = dp[i - 1][j + 1] + dp[i - 1][j] + dp[i - 1][j - 1];
dp[i][j] %= MOD;
}
dp[i][9] = dp[i - 1][9] + dp[i - 1][8];
dp[i][9] %= MOD;
}
long long ans = 0;
for (int i = 1; i <= 9; i++)
{
ans += dp[N][i];
ans %= MOD;
}
cout << ans << endl;
return 0;
}
本文采用 CC BY-SA 4.0 许可,本文 Markdown 源码:Haotian-BiJi