#include <iostream>
using namespace std;
int a[100005];
long long qp(long long n, long long m, long long p) {
long long ans = 1, base = n;
while (m) {
if (m & 1) (ans *= base) %= p;
(base *= base) %= p; m >>= 1;
}
return ans;
}
int main() {
long long n, k, sa=0, sb=0, sp3=0, t; cin >> n >> k;
for (int i=1; i<=n; i++) {cin >> a[i]; (sa += a[i]) %= 998244353;}
for (int i=1; i<=n; i++) {cin >> t; (sb += t) %= 998244353; (sp3 += (a[i] * t) % 998244353) %= 998244353;}
if (k == 0) {cout << n; return 0;}
cout << ((sa * sb + 998244353) % 998244353 * qp(sp3, k-1, 998244353)) % 998244353;
return 0;
}
完了,结论题代码不会写了
感觉怎么着都不至于出负数吧