codeforces1054H. Epic Convolution 2dFFT 原根

本文详细解析了 CodeForces 平台上的 1054H 题目——Epic Convolution 的解题思路。通过巧妙运用费马小定理、原根转换和 FFT 技术,将原本复杂的乘法运算转化为易于处理的加法运算,最终实现了高效的二维卷积计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

codeforces1054H. Epic Convolution

题目传送门

分析

直接处理不好处理,考虑转化。
难搞的是 c i 2 j 3 c^{i^2j^3} ci2j3
根据费马小定理,可以让 i 2 j 3 m o d    490018 i^2j^3\mod 490018 i2j3mod490018
发现模数较小,一个基本的思路是,考虑求 ∑ i , j a i b j [ i 2 j 3 ≡ k m o d    490018 ] \sum_{i,j}a_ib_j[i^2j^3\equiv k \mod 490018] i,jaibj[i2j3kmod490018]
乘法不好搞,考虑用原根把乘法转化成加法。
我们假设模数是质数 P P P,原根是 w w w,设 i = w x , j = w y , k = w z i=w^x,j=w^y,k=w^z i=wx,j=wy,k=wz
那么问题转化成
∑ i , j a i b j [ 2 x + 3 y ≡ z m o d    P − 1 ] \sum_{i,j}a_ib_j[2x+3y\equiv z \mod P-1] i,jaibj[2x+3yzmodP1]
只需要将所有的 a i a_i ai映射到 a 2 x a_{2x} a2x,所有的 b j b_j bj映射到 b 3 y b_{3y} b3y上就可以用 F F T FFT FFT解决了。
不是质数直接搞肯定不成,于是考虑分解一下模数然后用 C R T CRT CRT合并
490018 = 2 ⋅ 491 ⋅ 499 490018=2\cdot491\cdot499 490018=2491499
模数很给力,刚好仨质数。
将一个数 i i i分解成 ( i m o d    2 , i m o d    491 , i m o d    499 ) (i\mod 2, i \mod 491, i \mod 499) (imod2,imod491,imod499)
m o d    2 \mod 2 mod2这个玩意儿不用太在意,考虑分奇偶性。奇数的答案一定是奇数卷奇数得到的,偶数的答案用全部的答案减去奇数的答案就好了。
于是每个数 i i i按奇数和偶数分类后转化成二元组 ( i m o d    491 , i m o d    499

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值