提交记录 19490


用户 题目 状态 得分 用时 内存 语言 代码长度
x383494 1002i. 【模板题】多项式乘法 Accepted 100 78.723 ms 27156 KB C++ 1.69 KB
提交时间 评测时间
2023-05-30 22:45:12 2023-05-31 22:34:44
#include <cstdio>
#include <algorithm>
#include <vector>
#include <cmath>
#define UP(i, s, e) for(auto i=s; i!=e; ++i)
namespace m{ // } 
using ll = long long;
constexpr double pi = 3.1415926535897932;
constexpr int MOD = 998244353;
struct CC{
	int x;
	CC(int y=0){x=y;}
	CC& operator=(CC b){ x=b.x; return *this; }
	CC& operator=(int b){ x=b%MOD; return *this; }
	CC operator+(CC b){return CC((x+b.x)%MOD);}
	CC operator-(CC b){return CC((x+MOD-b.x)%MOD);}
	CC operator*(CC b){return CC((ll)x*b.x%MOD);}
	CC& operator*=(CC b){x=(ll)x*b.x%MOD; return *this;}
};
template<typename T>
T qpow(T a, int t){
	T ans = T(1);
	while(t){
		if(t&1) ans *= a;
		a *= a;
		t >>= 1;
	}
	return ans;
}
CC inverse(int x){
	return qpow(CC(x), MOD-2);
}
void change(CC *y, int len){
	std::vector<int> rev;
	rev.reserve(len);
	rev[0] = 0;
	UP(i, 1, len){
		rev[i] = rev[i>>1] >> 1;
		if(i&1) rev[i] |= len>>1;
	}
	UP(i, 0, len) if(i<rev[i]) std::swap(y[i], y[rev[i]]);
}
void ntt(CC *y, int len, int on){
	change(y, len);
	for(int h=2; h<=len; h<<=1){
		CC wn = qpow(CC(3), (MOD-1)/h);
		for(int j=0; j<len; j+=h){
			CC w = 1;
			UP(k, j, j+h/2){
				CC u = y[k], v = w * y[k+h/2];
				y[k] = u+v, y[k+h/2] = u-v;
				w = w * wn;
			}
		}
	}
	if(on == -1){
		std::reverse(y+1, y+len);
		CC inv = inverse(len);
		UP(i, 0, len){
			y[i] *= inv;
		}
	}
}
CC ia[1<<21], ib[1<<21], ic[1<<21];
int in, im;
void work(){
	scanf("%d%d", &in, &im);
	UP(i, 0, in+1) scanf("%d", &ia[i].x);
	UP(i, 0, im+1) scanf("%d", &ib[i].x);
	int len = 1;
	while(len < in+im+1) len<<=1;
	ntt(ia, len, 1);
	ntt(ib, len, 1);
	UP(i, 0, len){
		ic[i] = ia[i] * ib[i];
	}
	ntt(ic, len, -1);
	UP(i, 0, in+im+1){
		printf("%d ", ic[i].x);
	}
}
}
int main(){m::work(); return 0;}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #13.44 ms24 MB + 24 KBAcceptedScore: 0

Subtask #1 Testcase #278.439 ms26 MB + 452 KBAcceptedScore: 100

Subtask #1 Testcase #337.898 ms24 MB + 816 KBAcceptedScore: 0

Subtask #1 Testcase #437.959 ms24 MB + 804 KBAcceptedScore: 0

Subtask #1 Testcase #53.442 ms24 MB + 24 KBAcceptedScore: 0

Subtask #1 Testcase #63.441 ms24 MB + 24 KBAcceptedScore: 0

Subtask #1 Testcase #73.44 ms24 MB + 24 KBAcceptedScore: 0

Subtask #1 Testcase #872.574 ms26 MB + 184 KBAcceptedScore: 0

Subtask #1 Testcase #972.611 ms26 MB + 184 KBAcceptedScore: 0

Subtask #1 Testcase #1066.818 ms25 MB + 940 KBAcceptedScore: 0

Subtask #1 Testcase #1178.723 ms26 MB + 532 KBAcceptedScore: 0

Subtask #1 Testcase #1278.628 ms25 MB + 412 KBAcceptedScore: 0

Subtask #1 Testcase #133.44 ms24 MB + 24 KBAcceptedScore: 0


Judge Duck Online | 评测鸭在线
Server Time: 2024-04-24 14:10:10 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用