
1009 Product of Polynomials (25分) C++
发布日期:2021-05-08 02:32:51
浏览次数:34
分类:精选文章
本文共 1422 字,大约阅读时间需要 4 分钟。
多项式乘法的实现
多项式乘法涉及两个多项式A和B的相乘,要求输出乘积的非零项。以下是实现步骤:
读取输入:每个测试用例包含两行,分别表示多项式A和B。每行格式为K a1 a2 ... aK,其中K为非零项数,ai为指数,ai的系数依次排列。
存储多项式项:使用两个数组分别存储多项式A和B的项,按指数降序排列。数组索引表示指数,值表示系数。
初始化结果数组:创建一个足够大的数组来存储乘积结果,同样按指数降序排列。
多项式乘法:使用双重循环遍历A和B的每一项,计算乘积并累加到结果数组中。
合并同类项:从最高指数开始遍历结果数组,记录非零项。
输出结果:输出非零项的数量和每个项的指数及其系数,保留一位小数,确保格式正确。
以下是实现代码:
#includeusing namespace std;int main() { int k1, mp1, mp2; double po1[2500], po2[2500], po3[2500]; cin >> k1; for (int i = 0; i < k1; ++i) { int n; double p; scanf("%d", &n); scanf("%lf", &p); if (n > mp1) mp1 = n; po1[n] = p; } cin >> k1; for (int i = 0; i < k1; ++i) { int n; double p; scanf("%d", &n); scanf("%lf", &p); if (n > mp2) mp2 = n; po2[n] = p; } int k3 = 0; for (int i = mp1; i >=0; --i) { for (int j = mp2; j >=0; --j) { int total = i + j; if (total > 2500) continue; po3[total] += po1[i] * po2[j]; } } int count = 0; for (int i = 2500; i >=0; --i) { if (po3[i] != 0) { count++; if (count <= 2500) { printf("%d %.1lf", i, po3[i]); } } }}
代码解释:
读取输入:首先读取多项式A和B的非零项数K,然后读取每个项的指数和系数。
存储多项式项:将多项式项按指数存入数组,数组索引即为指数,值为系数。
初始化结果数组:po3数组用于存储乘积结果,同样按指数排列。
多项式乘法:双重循环遍历A和B的每一项,计算乘积并累加到结果数组中。
合并同类项:从最高指数开始遍历结果数组,记录非零项。
输出结果:输出非零项的数量和每个项的指数及其系数,确保格式正确。
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年05月01日 02时20分26秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
linux 防火墙操作
2023-02-02
Linux&Debian系统安装nginx
2023-02-02
Linux(Centos)上使用crontab实现定时任务(定时执行脚本)
2023-02-02
Linux(Centos)远程传输文件到另一台电脑机器上---指令(scp)
2023-02-02
Linux(Centos为例)使用Docker安装Label-Studio
2023-02-02
Linux***检测基础学习
2023-02-02
linux+nginx+php+mysql安装及配置
2023-02-02
Linux+oracle修改IP方法
2023-02-02
Linux-----sed 命令详解
2023-02-02
Linux----LVM扩容磁盘空间(讲的也很好)
2023-02-02
Linux---文件权限
2023-02-02
Linux--gdb/cgdb
2023-02-02
Linux--git
2023-02-02
linux--Linux 各目录及每个目录的详细介绍
2023-02-02
linux--make/进度条
2023-02-02
Linux--NFS和DHCP服务器
2023-02-02
Linux--vim配置
2023-02-02
Linux--内核进程O(1)调度队列
2023-02-02
Linux--基本指令2
2023-02-02