I Hate Non-integer Number
I Hate Non-integer Number
题意
给定一个长度为 998244353 取模。
思路
dp,可以看作是一个子集搜索,所以可以定义状态为:
代码
#include <iostream>
using namespace std;
using ll = long long;
const int MaxN = 110, mod = 998244353;
int f[MaxN][MaxN][MaxN][MaxN], a[MaxN], n, y, ans;
int DFS(int x, int u, int sum) {
if (x == n + 1) {
return !sum && u == y;
}
if (u > y) {
return 0;
}
if (f[y][x][u][sum] != -1) {
return f[y][x][u][sum];
}
return f[y][x][u][sum] = (DFS(x + 1, u + 1, (sum + a[x] % y) % y) + DFS(x + 1, u, sum)) % mod;
}
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
for (y = 1; y <= n; y++) {
for (int i = 0; i <= n; i++) {
for (int j = 0; j <= n; j++) {
for (int k = 0; k <= n; k++) {
f[y][i][j][k] = -1;
}
}
}
ans = (ans + DFS(1, 0, 0)) % mod;
}
cout << ans << endl;
return 0;
}