dWoi Round 1 B 题解
Description
求有多少个
n 位无前导零的数满足所有数位中有偶数个k 。1 \le n \le 10^5$,$1 \le k \le 9$,$1 \le t \le 10^6
Subtask 1
约束条件:
一位数只有
Subtask 2
约束条件:
留给了爆搜或者写挂没开 long long 的正解。
然后发现暴力貌似是
Subtask 3
约束条件:
考虑动态规划。
对于一个满足要求的
因此我们可以开两个数组
对于初值,注意特判
另外,
然后你就得到了 但并 A 不了。
你也可以尝试矩阵快速幂,听 lgd 说是 但好像也 A 不了。
Subtask 4
考虑初始化,把
然后你就得到了
Code
#include <bits/stdc++.h>
using namespace std;
unsigned long long f[100005];
unsigned long long g[100005];
int main () {
int t;
scanf("%d", &t);
f[1] = 8, g[1] = 1;
for (int i = 2; i <= 100000; i++) {
f[i] = f[i - 1] * 9 + g[i - 1];
g[i] = g[i - 1] * 9 + f[i - 1];
f[i] %= 998244353;
g[i] %= 998244353;
}
while (t--) {
int n, k;
scanf("%d%d", &n, &k);
if (n == 1) {
puts("9");
continue;
}
printf("%llu\n", f[n] % 998244353);
continue;
}
return 0;
}