洛谷 P3803 【模板】多项式乘法(FFT)

FT601Q芯片深度解析:从USB3.0引脚定义到FPGA FIFO协议实战选型 本文深入解析FT601Q芯片在USB3.0接口设计与FPGA协议栈开发中的应用,详细介绍了USB3.0引脚定义、FT601Q芯片架构、245同步FIFO模式及硬件设计要点,帮助工程师实现高速数据传输系统。 阅读详情

【模板】多项式乘法(FFT)

题目背景

这是一道多项式乘法模板题。

注意:本题并不属于中国计算机学会划定的提高组知识点考察范围。

题目描述

给定一个 n n n 次多项式 F ( x ) F(x) F(x),和一个 m m m 次多项式 G ( x ) G(x) G(x)。

请求出 F ( x ) F(x) F(x) 和 G ( x ) G(x) G(x) 的卷积。

输入格式

第一行两个整数 n , m n,m n,m。

接下来一行 n + 1 n+1 n+1 个数字,从低到高表示 F ( x ) F(x) F(x) 的系数。

接下来一行 m + 1 m+1 m+1 个数字,从低到高表示 G ( x ) G(x) G(x) 的系数。

输出格式

一行 n + m + 1 n+m+1 n+m+1 个数字,从低到高表示 F ( x ) ⋅ G ( x ) F(x) \cdot G(x) F(x)⋅G(x) 的系数。

样例 #1

样例输入 #1

1 2
1 2
1 2 1

样例输出 #1

1 4 5 2

提示

保证输入中的系数大于等于 0 0 0 且小于等于 9 9 9。

对于 100 % 100\% 100% 的数据: 1 ≤ n , m ≤ 10 6 1 \le n, m \leq {10}^6 1≤n,m≤106。

原题

洛谷P3803——传送门

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

// NTT的特殊要求:模数P需满足P=k*2^m+1,例如常用的模数998244353=7*17*2^23+1
const int Mod = 998244353;
const int G = 3; // 998244353的原根为3
const int maxn = 1e6 + 6;

int QuickPow(int a, int k) // 快速幂
{
    int ret = 1;
    while (k)
    {
        if (k & 1)
            ret = 1LL * ret * a % Mod;
        a = 1LL * a * a % Mod;
        k >>= 1;
    }
    return ret;
}

int rev[3 * maxn];
inline void GetReverse(int len, int lg) // 获得二进制位的反转
{
    for (int i = 0; i < len; i++)
        rev[i] = 0;
    for (int i = 0; i < len; i++)
        rev[i] = (rev[i >> 1] >> 1) | ((i & 1) << (lg - 1));
}

void NTT(vector<int> &a, int dir)
{
    int len = a.size();
    for (int i = 0; i < len; i++)
        if (i < rev[i])
            swap(a[i], a[rev[i]]);
    int g = (dir == 1 ? G : QuickPow(G, Mod - 2));
    for (int stp = 1; stp < len; stp <<= 1)
    {
        int wn = QuickPow(g, (Mod - 1) / (stp << 1));
        int w = 1;
        for (int k = 0; k < stp; k++)
        {
            for (int even = k; even < len; even += stp << 1)
            {
                int odd = even + stp;
                int tmp = 1LL * w * a[odd] % Mod;
                a[odd] = (a[even] - tmp + Mod) % Mod;
                a[even] = (ll)(a[even] + tmp) % Mod;
            }
            w = 1LL * w * wn % Mod;
        }
    }
    if (dir == -1)
    {
        int inv = QuickPow(len, Mod - 2); // 乘法逆元
        for (int i = 0; i < len; i++)
            a[i] = 1LL * a[i] * inv % Mod;
    }
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    // 以下代码实现了多项式f(x)和多项式g(x)相乘
    int n, m;
    cin >> n >> m;
    int lg = 0;
    int bound = 1; // 将多项式的系数扩充到2的整数次幂
    while (bound <= n + m)
    {
        bound <<= 1;
        lg++;
    }
    GetReverse(bound, lg);
    vector<int> f(bound, 0), g(bound, 0); // 数组大小开到bound(即结果多项式扩充后的大小)
    for (int i = 0; i <= n; i++)
    {
        cin >> f[i];
    }
    for (int i = 0; i <= m; i++)
    {
        cin >> g[i];
    }
    NTT(f, 1);
    NTT(g, 1);
    for (int i = 0; i < bound; i++)
    {
        f[i] = (1LL * f[i] * g[i]) % Mod; // 将相乘结果存储在f[]数组中
    }
    NTT(f, -1);
    for (int i = 0; i <= n + m; i++)
    {
        cout << f[i] << ' ';
    }

    return 0;
}
052、联发科Imagiq HyperEngine架构适配:天玑9000/9200的ISP多核并行调度与Tuning Toolkit调优案例 摘要: 项目组在适配联发科天玑9200的Imagiq 890 ISP架构时,遇到多摄预览功耗过高、帧率不稳等问题。通过分析多核调度机制,调整辅核QoS通道、优化AI-ISP协同模式(采用FREERUN+运动补偿),并利用Tuning Toolkit的Pipeline Viewer动态分配负载,最终降低功耗30mA、提升画质。关键经验包括:避免多核带宽冲突、合理配置动态时钟策略,以及统一校准参数版本管理。天玑9000/9200的HyperEngine架构需优先理解多核协同逻辑,再针对性调优,否则易引发场景兼容 阅读详情

相关推荐

YOLOv8使用设备摄像头实时监测

YOLOv8使用设备摄像头实时监测

Joining667的博客 4188

洛谷 - P3803 【模板】多项式乘法(FFT/NTT)

题目链接:点击查看 题目大意:给出两个多项式 F( x ) 和 G( x ) 的系数,求其卷积后的系数 题目分析:存一个FFT的模板,原理学不明白,数论和dp都扔给队友了,当个快乐的fw 借用zx学长模板中的代码: #include<iostream> #include<cstdio> #include<string> #include<ctime> #include<cmath> #include<cstring> #inc

Falcon的博客 691

从零开始,手把手教你用RTL代码设计一个简单的8位CPU(附状态图与ALU设计)

本文详细介绍了如何从零开始设计一个简单的8位CPU,包括状态机设计、ALU实现与RTL编码实战。通过具体的指令集分析、状态图设计和Verilog代码示例,帮助读者深入理解CPU工作原理,并掌握RTL代码编写技巧。特别适合计算机系统学习者和硬件设计爱好者。

weixin_30847063的博客 320

洛谷p3803 FFT入门

洛谷p3803 FFT入门ps:花了我一天的时间弄懂fft的原理,感觉fft的折半很神奇! 大致谈一谈FFT的基本原理:  对于两个多项式的卷积,可以O(n^2)求出来(妥妥的暴力)  显然一个多项式可以用a0+a1X+a2X^2+a3X^3+a4X^4……表示。  也可以用(x1,y1),(x2,y2),(x3,y3),(x4,y4)的点集来表示。  用点值表示有一个好处:两个多项式的卷

kxy的博客 520

保姆级教程:用Simulink从零搭建新能源汽车VCU蠕行控制模型(附模型下载)

本文提供了一份详细的Simulink建模教程,指导读者从零开始搭建新能源汽车VCU蠕行控制模型。内容涵盖环境配置、信号定义、蠕行模式使能条件、扭矩控制算法实现及模型验证等关键步骤,特别适合需要将控制算法转化为可执行模型的初学者。教程还包含实用代码示例和常见问题解决方案,帮助开发者快速掌握VCU蠕行控制的Simulink实现技巧。

547

快速生成2D卡通人物的AI工具:开启Live2D角色创作的新时代

随着这一创新工具的推出,我们正见证着Live2D角色创作进入了一个全新的阶段。它不仅极大地简化了角色设计的过程,也为广大创作者提供了一种全新的表达方式。对于那些渴望将脑海中的构思迅速转化为现实的人来说,这无疑是一大福音。现在就访问项目主页,开始探索无限可能吧!t=O83A项目主页https://human3daigc.github.io/Textoon_webpage/

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 4836

[SHOI2012]随机树 洛谷P3803 【期望dp】

题面 SOL 分两个问题讨论; Q1 :显然的期望dp定义式 :f[i]:第i步的期望平均叶子深度f[i]:第i步的期望平均叶子深度f[i]:第i步的期望平均叶子深度, 转移方程: f[i]=f[i−1]∗(i−1)+f[i−1]+2i,−>f[i]=f[i−1]+2i.{f[i]={f[i-1]*(i-1)+f[i-1]+2}\over{i}},->f[i]=f[i-1]+{2\o...

Jun 293

FPGA工程师面试——FPGA基础知识24题

线与逻辑是两个输出信号相连可以实现与的功能。在硬件上,要用OC门(集电极开路与非门)来实现,由于不用OC门可能使灌电流过大,而烧坏逻辑门,因此在输出端口应加一个上拉电阻。

FPGA/MATLAB学习教程/源码/项目合作开发 1086

FFT(理解+模板+例题)

一、理解 快速求两个多项式相乘。朴素做法就是暴力枚举两个多项式的每一项【】。FFT,先用点值法(后面解释)把多项式表示出来(DFT过程)【】,再计算点值相乘【】,然后再把点值法还原成系数法(后面解释)表示(IDFT过程)【】。 点值法:涉及线代,简单理解就是把多项式看为函数。中学知识告诉我们,n个未知数(这里的未知数是每一项的系数)至少要有n个方程才能有唯一解。(线代可以证明,有兴趣自己查。)那么,如果我们知道函数的n个不同的值。即n个,我们就可以唯一的确定一个多项式。DFT就是巧妙的利用复数,将n个系

birdmanqin的博客 1469

Vue2 - 详细实现接入使用海康威视监控云端显示及控制功能,网站集成安装海康监控及实时监控显示、回放、放大缩小画面、视频画面截图、截屏抓拍、摄像头控制,实时推流及播放器解决延迟卡顿等问题(详细代码)

vue2,nuxt2,海康威视,海康监控,摄像头监控,vue对接海康处理接口认证规则,监控实时预览和回放功能,海康api接口,安全认证,海康开放平台,官方文档,播放海康摄像头的监控视频,海康实时监控播放详细步骤,web,黑屏,特别卡不流畅怎么办,解决无法推流,录像,连接不上,vue,海康,vue海康视频监控,海康开放平台,实时监控画面,海康插件,视频播放,回放,视频流地址,取流协议,视频sdk播放,hik,rtsp,rtmp,hls,ws,网站,网页,h5页面,后台管理系统,vue2对接海康监控设备,无法连

🏆 前端领域优质创作者 8245

【即插即用模块】注意力篇 | MICCAI 2023 | MFE:多尺度特征提取,告别固定感受野,猛涨2个点!

本文提出一种用于低分辨率乳腺癌病理图像超分辨率与分类的网络SHISRCNet。针对现有方法处理低分辨率图像效果差、感受野固定等问题,设计了多特征提取模块(MFE),通过多速率空洞卷积覆盖全尺度感受野(局部到全局),结合递进残差连接和动态权重融合机制,实现自适应多尺度特征增强。实验表明,该模块在超分辨率任务中PSNR提升近2个点,分类准确率显著提高。代码提供详细注释,支持即插即用,适用于各类多尺度视觉任务。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 207

B3954 [GESP202403 二级] 乘法问题(洛谷)

这一题非常的简单,10的6次方是1000000,这里只需要一个累乘器就行了,但是累乘器的初始值要是1,为什么呢,因为如果累乘器初始值是0的话,不管怎么乘结果都是0,所以累乘器的初始值要是1。

haowenbu的博客 261

Python爬虫教程:抓取区块链交易信息及加密货币市场数据

随着区块链技术和加密货币的迅猛发展,区块链交易和加密货币市场的数据逐渐成为金融、技术、经济研究等领域的热点。对于开发者和研究者而言,实时获取区块链交易数据和加密货币市场行情,对于投资分析、市场预测、技术研究等具有重要的参考价值。本文将通过Python爬虫技术,介绍如何抓取区块链交易信息及加密货币市场数据,详细阐述数据获取的原理、技术方案、实现方法以及抓取到的数据的存储与分析。我们将依托最新的爬虫技术,如requestsSeleniumScrapy,以及相关的数据处理库(如pandasmatplotlib。

2201_76125261的博客 2777

洛谷 P3803 模板】多项式乘法 FFT

https://www.luogu.com.cn/problem/P3803 题目背景 这是一道多项式乘法模板题 题目描述 给定一个 n 次多项式 F(x),和一个 m 次多项式 G(x)。 请求出 F(x) 和 G(x) 的卷积。 输入格式 第一行两个整数 n,mn,m。 接下来一行 n+1 个数字,从低到高表示 F(x)F(x) 的系数。 接下来一行 m+1 个数字,从低到高表示 G(x)G(...

xiji333的博客 320

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

洛谷P3803 【模板】多项式乘法(FFT)

FFT首杀

Ajwallet 485

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

洛谷P3803【模板】多项式乘法(FFT)

题面 题目背景 这是一道 FFT 模板题 题目描述 给定一个$n$次多项式$F(x)$,和一个$m$次多项式$G(x)$。 请求出$F(x)$和$G(x)$的卷积。 输入格式 第一行2个正整数$n,m$。 接下来一行$n+1$个数字,从低到高表示$F(x)$的系数。 接下来一行$m+1$个数字,从低到高表示$G(x)$的系数。 输出格式 ...

asd13716936122的博客 215

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【总结】对FFT的理解 / 【洛谷 P3803】 【模板】多项式乘法(FFT)

题目链接 \(\Huge\text{无图,慎入}\) \(FFT\)即快速傅里叶变换,用于加速多项式乘法。 如果暴力做卷积的话就是一个多项式的每个单项式去乘另一个多项式然后加起来,时间复杂度为\(O(n^2)\)。 \(FFT\)算法基本思想是把系数表达式转换成点值表达式,求出卷积的点值表达式,再转换回系数表达式。 何为点值表达式? 把多项式看成一个函数,比如\(n\)次多项式\(F\)可以看成一...

weixin_30519071的博客 96

洛谷OJ P3803 【模板】多项式乘法(FFT)

题目链接:https://www.luogu.org/problemnew/show/P3803 题目思路:FFT模板题 AC代码: // luogu-judger-enable-o2 #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;iostream&gt; #include &lt;algorithm&gt;...

baodream的博客 575

FFT/NTT总结+洛谷P3803 【模板】多项式乘法(FFT)(FFT/NTT)

前言 众所周知,这两个东西都是用来算多项式乘法的。 对于这种常人思维难以理解的东西,就少些理解,多背板子吧! 因此只总结一下思路和代码,什么概念和推式子就靠巨佬们吧 推荐自为风月马前卒巨佬的概念和定理都非常到位的总结 推荐ppl巨佬的简明易懂的总结 FFT 多项式乘法的蹊径——点值表示法 一般我们把两个长度为\(n\)的多项式乘起来,就类似于做竖式乘法,一位一位地乘再加到对应位上,是\(...

a83229442的博客 365

【题解】洛谷 P3803 【模板】多项式乘法 [FFT & NTT]

啊吧啊吧。

Isaac Regulus的博客 256

洛谷 - P3803 -【模板】多项式乘法(FFT) - NTT

https://www.luogu.org/problemnew/show/P3803 看别人偏偏就是要用NTT去过。实验证明大概是这样用。求0~n的多项式和0~m的多项式的乘积。注意MAXN取值。A数组的大小必须足以容纳大于等于A+B总size的最小的2的幂次。干脆就直接取4倍? #include <bits/stdc++.h> using namespace std; typede...

weixin_30832351的博客 106

matlab 多项式模乘,[洛谷P3803] 【模板】多项式乘法(FFT, NTT)

题目大意:$FFT$,给你两个多项式,请输出乘起来后的多项式。题解:$FFT$,由于给的$n$不是很大,也可以用$NTT$做卡点:无C++ Code:FFT:#include #include using namespace std;const double Pi = acos(-1);int n, m;struct complex {double r, i;complex (double a =...

weixin_35955928的博客 557

洛谷 P3803 【模板】多项式乘法(FFT)fft

题目描述给定一个n次多项式F(x),和一个m次多项式G(x)。请求出F(x)和G(x)的卷积。输入输出格式输入格式: 第一行2个正整数n,m。接下来一行n+1个数字,从低到高表示F(x)的系数。接下来一行m+1个数字,从低到高表示G(x))的系数。输出格式: 一行n+m+1个数字,从低到高表示F(x)∗G(x)的系数。输入输出样例输入样例#1: 1 2 1 2 1 2 1 输出样例#1

liangzihao1的博客 467

洛谷 - P3803 - 【模板】多项式乘法(FFT) - FFT

https://www.luogu.org/problemnew/show/P3803 用反向学习的FFT通过这个东西。 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int MAXN = 3e5; const double PI = acos(-1.0); struct...

weixin_30882895的博客 67
上一篇: Codeforces Global Round 12 C2. Errich-Tac-Toe (Hard Version) 题解 构造
下一篇: Codeforces Round 927 (Div. 3) D. Card Game 题解 贪心
bbc_ouo
博客等级 码龄3年 2096粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值