求DEBUG
查看原帖
求DEBUG
945370
MineCraftLittlePea楼主2025/6/23 13:37
#include <bits/stdc++.h>
#define mplus(x,y) ((x + y) % MOD)
#define mmul(x,y) (((x % MOD) * (y % MOD)) % MOD)
#define int long long
using namespace std;
const int N = 2e5 + 5;
const int K = 10 + 5;
const int MOD = 998244353;
int n,k;
int a[N][K]; // a[i][j] = i^j
int s[N][K];
int C[K][K];
inline int initC(int x) {
	C[0][0] = 1;
	for (int i = 1; i <= x; i++) {
		for (int j = i; j >= 0; j--) {
			C[i][j] = C[i - 1][j - 1] + C[i - 1][j];
		}
	}
}
inline int getSum(int l,int r) {
	return s[r] - s[l - 1];
}
signed main() {
	cin >> n >> k;
	initC(k);
	for (int i = 1; i <= n; i++) {
		a[i][0] = 1;
		cin >> a[i][1];
		for (int j = 2; j <= k; j++) a[i][j] = mmul(a[i][j - 1],a[i][1]);
	}
	int ans = 0;
	s[0][0] = 1;
	for (int i = 1; i <= n; i++) {
		s[i][0] = 1;
		for (int j = k; j >= 0; j--) {
			for (int p = j; p >= 0; p--) {
				s[i][j] = mplus(s[i][j],mmul(mmul(s[i - 1][p],a[i][j - p]),C[j][p]));
			}
		}
		ans = mplus(ans,s[i][k]);
	}
	return cout << ans << endl,0;
}
2025/6/23 13:37
加载中...