提交记录 11876


用户 题目 状态 得分 用时 内存 语言 代码长度
denverjin 1002i. 【模板题】多项式乘法 Accepted 100 57.938 ms 8772 KB C++ 1.68 KB
提交时间 评测时间
2020-02-18 20:01:06 2020-08-01 02:48:49
#include <bits/stdc++.h>
using namespace std;

typedef unsigned long long ull;

const int mod = 998244353, g = 3;
const int N = 1 << 18;

int qp(int x, int n) {
	int ans = 1;
	for (; n; n >>= 1, x = 1LL * x * x % mod)
		n & 1 && (ans = 1LL * ans * x % mod);
	return ans;
}

int inv(int x) {
	return qp(x, mod - 2);
}

int W[N], r[N], pw[N];
ull tmp[N];

void ntt(int *a, int n, int f) {
	int k = __builtin_ctz(n);
	for (int i = 1; i < n - 1; ++ i) {
		r[i] = r[i >> 1] >> 1 | (i & 1) << k - 1;
		if (i < r[i]) swap(a[i], a[r[i]]);
	}
	for (int i = 0; i < n; ++ i) tmp[i] = a[i];
	for (int h = 2; h <= n; h <<= 1) {
		pw[0] = 1;
		for (int i = 0; i < h; ++ i)
			pw[i + 1] = 1LL * pw[i] * W[h] % mod;
		for (int i = 0; i < n; i += h) {
			int *w = pw;
			ull *u = tmp + i, *v = tmp + i + h / 2;
			for (int j = i; j < i + h / 2; ++ j) {
				ull x = *v * *w % mod;
				*v = *u + mod - x; *u += x;
				++ u, ++ v, ++ w;
			}
		}
	}
	for (int i = 0; i < n; ++ i) a[i] = tmp[i] % mod;
	if (!~f) {
		reverse(a + 1, a + n); int Inv = inv(n);
		for (int i = 0; i < n; ++ i) a[i] = 1LL * a[i] * Inv % mod;
	}
}

int main() {
	int n, m;
	scanf("%d %d", &n, &m);
	int siz = 1; while (siz < n + m + 1) siz <<= 1;
	for (int i = 1; i <= siz; i <<= 1) W[i] = qp(g, (mod - 1) / i);
	int *a = new int[siz];
	for (int i = 0; i <= n; ++ i) scanf("%d", &a[i]);
	for (int i = n + 1; i < siz; ++ i) a[i] = 0;
	int *b = new int[siz];
	for (int i = 0; i <= m; ++ i) scanf("%d", &b[i]);
	for (int i = m + 1; i < siz; ++ i) b[i] = 0;
	ntt(a, siz, 1); ntt(b, siz, 1);
	int *c = new int[siz];
	for (int i = 0; i < siz; ++ i) c[i] = 1LL * a[i] * b[i] % mod;
	ntt(c, siz, -1);
	for (int i = 0; i <= n + m; ++ i) printf("%d ", c[i]); puts("");
	return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #138.26 us52 KBAcceptedScore: 0

Subtask #1 Testcase #257.331 ms8 MB + 500 KBAcceptedScore: 100

Subtask #1 Testcase #325.999 ms3 MB + 876 KBAcceptedScore: 0

Subtask #1 Testcase #425.795 ms3 MB + 864 KBAcceptedScore: 0

Subtask #1 Testcase #541.38 us52 KBAcceptedScore: 0

Subtask #1 Testcase #638.22 us52 KBAcceptedScore: 0

Subtask #1 Testcase #738.55 us52 KBAcceptedScore: 0

Subtask #1 Testcase #851.777 ms8 MB + 232 KBAcceptedScore: 0

Subtask #1 Testcase #951.738 ms8 MB + 232 KBAcceptedScore: 0

Subtask #1 Testcase #1046.128 ms7 MB + 988 KBAcceptedScore: 0

Subtask #1 Testcase #1157.938 ms8 MB + 580 KBAcceptedScore: 0

Subtask #1 Testcase #1257.819 ms7 MB + 460 KBAcceptedScore: 0

Subtask #1 Testcase #1336.73 us44 KBAcceptedScore: 0


Judge Duck Online | 评测鸭在线
Server Time: 2026-03-27 00:07:15 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠