提交记录 16722


用户 题目 状态 得分 用时 内存 语言 代码长度
Saisyc 1002i. 【模板题】多项式乘法 Accepted 100 48.421 ms 4632 KB C++ 1.43 KB
提交时间 评测时间
2021-10-18 00:10:49 2021-10-18 00:10:52
#include <cstdio>
#include <cctype>
#include <algorithm>

const int N =     1 << 21;
const int p =    81 << 21 | 1;
const int g =  1167 << 12 | 1;
const int h = 11443 << 12 | 1;

inline int pow_modp(int a, int b) { int x = 1; for(; b; a = (long long)a * a % p, b >>= 1) if(b & 1) x = (long long)x * a % p; return x; }

int ntt_sup[N];
inline void ntt(auto a[], int n, const int g) {
	auto b = ntt_sup, j = a, _j = a; int _n = n >> 1, i, k, _k, w, _w;
	for(i = 1, w = pow_modp(g, (p - 1) / n); i < n; i <<= 1, w = (long long)w * w % p, std :: swap(a, b))
		for(k = 0, j = a, _j = a + _n, _w = 1; k != n; k += i, _w = (long long)_w * w % p)
			for(_k = k, k += i; _k != k; ++j, ++_j, ++_k)
				b[_k] = *j + *_j < 0 ? *j + *_j + p : *j + *_j - p,
				b[_k + i] = (long long)(*j - *_j) * _w % p;
	if(b != ntt_sup) std :: copy(a, a + n, b);
}
inline void poly_mul(auto a[], auto b[], int n) {
	ntt(a, n, g), ntt(b, n, g);     for(int i = 0; i < n; ++i) a[i] = (long long)a[i] * b[i] % p; ntt(a, n, h);
	int inv_n = pow_modp(n, p - 2); for(int i = 0; i < n; ++i) a[i] = (long long)a[i] * inv_n % p;
	for(int i = 0; i < n; ++i) a[i] = a[i] < 0 ? a[i] + p : a[i];
}

int n, n_a, n_b;
int a[N], b[N];

int main(void) {
	scanf("%d%d", &n_a, &n_b); for(n = 1; n <= n_a + n_b; n <<= 1);
	for(int i = 0; i <= n_a; ++i) scanf("%d", a + i);
	for(int i = 0; i <= n_b; ++i) scanf("%d", b + i);
	poly_mul(a, b, n);
	for(int i = 0 ; i <= n_a + n_b; ++i) printf("%d ", a[i]);
	return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #110.83 us28 KBAcceptedScore: 0

Subtask #1 Testcase #248.104 ms4 MB + 456 KBAcceptedScore: 0

Subtask #1 Testcase #321.951 ms1 MB + 820 KBAcceptedScore: 100

Subtask #1 Testcase #422.013 ms1 MB + 808 KBAcceptedScore: 0

Subtask #1 Testcase #511.67 us28 KBAcceptedScore: 0

Subtask #1 Testcase #611.39 us28 KBAcceptedScore: 0

Subtask #1 Testcase #710.56 us28 KBAcceptedScore: 0

Subtask #1 Testcase #842.559 ms4 MB + 188 KBAcceptedScore: 0

Subtask #1 Testcase #942.402 ms4 MB + 188 KBAcceptedScore: 0

Subtask #1 Testcase #1036.609 ms3 MB + 944 KBAcceptedScore: 0

Subtask #1 Testcase #1148.308 ms4 MB + 536 KBAcceptedScore: 0

Subtask #1 Testcase #1248.421 ms3 MB + 416 KBAcceptedScore: 0

Subtask #1 Testcase #1310.47 us28 KBAcceptedScore: 0


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