BUAA数据结构第三次编程题——多项式相乘

  • 看前须知
  • 第三次上机题汇总
  • 题目内容
    • 问题描述
    • 输入形式
    • 输出形式
    • 样例
    • 样例说明
  • 题解
    • 易错点和难点
    • 参考代码
    • 补充测试的数据

看前须知

要点介绍和简要声明.

第三次上机题汇总

连续线段——结构体多级排序.

猴子选大王(约瑟夫问题)+3种解决约瑟夫问题的方法.

多项式相乘.

文件加密(环)——要求循环链表熟练的删除操作.

词频统计(数组或链表实现).

题目内容

问题描述

编写一个程序实现两个一元多项式相乘。

输入形式

首先输入第一个多项式中系数不为0的项的系数和指数,以一个空格分隔。且该多项式中各项的指数均为0或正整数,系数和最高幂次不会超过int类型的表示范围。对于多项式 anxn +a n-1 x n-1+…+ a1x1+ a0x0 的输入方法如下:
an n a n-1 n-1 … a1 1 a0 0
即相邻两个整数分别表示表达式中一项的系数和指数。在输入中只出现系数不为0的项。最后一项的指数后没有空格,只有一个回车换行符。
按照上述方式再输入第二个多项式。

输出形式

将运算结果输出到屏幕。将系数不为0的项按指数从高到低的顺序输出,每次输出其系数和指数,均以一个空格分隔,最后一项的指数后也可以有一个空格。

样例

【样例输入】

10 80000 2 6000 7 300 5 10 18 0
3 6000 5 20 8 10 6 0

【样例输出】

30 86000 50 80020 80 80010 60 80000 6 12000 21 6300 10 6020 31 6010 66 6000 35 320 56 310 42 300 25 30 130 20 174 10 108 0

样例说明

输入的两行分别代表如下表达式:
10x80000+ 2x6000 + 7x300 + 5x10 + 18
3x6000 + 5x20 + 8x10 + 6
相乘结果为:
30x86000 + 50x80020 + 80x80010 + 60x80000 + 6x12000 + 21x6300 + 10x6020 + 31x6010 + 66x6000+ 35x320 + 56x310 + 42x300 + 25x30 + 130x20 + 174x10 + 108

题解

易错点和难点

本题不难,主要一个是读入,一个是计算。

对于读入,我们需要用do while来进行读入,在读入的过程中,顺便记录多项式的项数。

对于计算,有一个需要注意的一点,就是可能会出现很多的指数相同的项,所以我们计算(系数相乘,指数相加)完后,我们需要进行去重操作。但是此处有技巧,如果有指数相同的项,我们只需要保留第一项即可,如果不是,可能会造成不必要的麻烦。

参考代码

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<ctype.h>
struct expression{          //多项式结构体 int coe;               //系数 int pow;               //指数
};
typedef struct expression ex;
ex a[2000],b[2000],c[2000];//a是第一个多项式,b是第二个多项式 ,c是最后相乘的多项式
int cmp(const void*p1,const void*p2);
int main()
{   int i,j,k=0;int n=0,nn=0;//n是第一个多项式的项数 ,nn是第二个多项式的项数  char ch;do   //读入第一个多项式 {scanf("%d%d%c",&a[n].coe,&a[n].pow,&ch);n++;}while(ch!='\n');do //读入第二个多项式{scanf("%d%d%c",&b[nn].coe,&b[nn].pow,&ch);nn++;}while(ch!='\n');qsort(a,n,sizeof(ex),cmp); //按指数排序 qsort(b,nn,sizeof(ex),cmp);    //按指数排序 for(i=0;i<n;i++){for(j=0;j<nn;j++){c[k].coe=a[i].coe*b[j].coe;//系数相乘 c[k].pow=a[i].pow+b[j].pow;//指数相加 k++;}}qsort(c,k,sizeof(ex),cmp);//根据指数排序 for(i=0;i<k;i++){if(c[i].pow == c[i+1].pow && c[i].pow!=0)//指数一样的进行去重操作 {c[i+1].coe+=c[i].coe;//指数一样的进行去重操作 c[i].coe=0;//去重项系数设为零 }}qsort(c,k,sizeof(ex),cmp);//根据指数排序 for(i=0;i<k;i++){if(c[i].coe==0)//去重项不输出 {continue;}else{printf("%d %d ",c[i].coe,c[i].pow);//输出 }}return 0;
}
int cmp(const void*p1,const void*p2)
{struct expression *a=(struct expression*)p1;struct expression *b=(struct expression*)p2;return b->pow-a->pow;
}

补充测试的数据

输入

123 346 3456 123 1344 54 678 34 1345 1 134 0
23452 123 562 56 567 23 535763 4 4567 2

输出

2884596 469 69126 402 69741 369 65898849 350 561741 348 81050112 246 1942272 179 31519488 177 15900456 157 1959552 146 1851596928 127 15783552 125 31542940 124 3142568 123 755328 110 381036 90 762048 77 720065472 58 1140316 57 6213356 56 363247314 38 3096426 36 762615 24 75978 23 720601235 5 71792242 4 6142615 3 611978 2

BUAA(2021春)多项式相乘相关推荐

  1. BUAA(2021春)文件加密(环)——要求循环链表熟练的删除操作

    BUAA数据结构第三次编程题--文件加密(环) 看前须知 第三次上机题汇总 题目内容 问题描述(建议用链表实现) 输入形式 输出形式 样例 样例说明 题解 易错点和难点 参考代码 补充测试的数据 看前 ...

  2. BUAA(2021春)实验:树的构造与遍历——根据提示循序渐进(可惜提示有问题Ծ‸Ծ)

    BUAA数据结构第五次编程题 --实验:树的构造与遍历 看前须知 第五次上机题汇总 实验目的与要求 实验内容 Huffman编码文件压缩 问题描述 实验准备 实验步骤 [步骤1] [步骤2] [步骤3 ...

  3. BUAA(2021春)大作业—— 文本摘要生成(数组字典树+快排=0.087s)

    BUAA数据结构大作业-- 文本摘要生成 看前须知 题目内容 问题描述 输入形式 输出形式 样例 样例说明 题解 思考和详解 参考代码 看前须知 要点介绍和简要声明. 题目内容 问题描述 在自然语言文 ...

  4. BUAA(2021春)查家谱(士谔书院16级期末)——找最近公共祖先(已上传测试数据和代码)

    BUAA数据结构期末模拟题--查家谱 看前须知 考试回顾 题目内容 问题描述 输入形式 输出形式 样例 样例说明 题解 思考和详解 参考代码 测试数据 看前须知 要点介绍和简要声明. 考试回顾 格式控 ...

  5. BUAA(2021春)小型图书管理系统

    BUAA数据结构第二次编程题--小型图书管理系统 看前须知 第二次上机题汇总 题目内容 问题描述 输入形式 输出形式 样例 样例说明 题解 易错点和难点 参考代码 补充测试的数据 推荐题单 看前须知 ...

  6. BUAA(2021春)机试检测异常(简)(期末考试题)——简单排序

    BUAA数据结构期末考试题--机试检测异常(简) 看前须知 题目内容 问题描述 输入形式 输出形式 样例 样例说明 题解 思路详解 参考代码 补充测试的数据 看前须知 要点介绍和简要声明. 题目内容 ...

  7. BUAA(2021春)空闲空间申请模拟(期中考试题)——注意读题,难度其实一般

    BUAA数据结构期中考试题--空闲空间申请模拟 看前须知 题目内容 问题描述 输入形式 输出形式 样例 样例说明 题解 笔者的抱怨和思路详解 参考代码 补充测试的数据 看前须知 要点介绍和简要声明. ...

  8. BUAA(2021春)空闲空间合并(期末考试模拟题)——结构体二级排序

    BUAA数据结构期末模拟题--空闲空间合并 看前须知 考试回顾 题目内容 问题描述 输入形式 输出形式 样例 样例说明 题解 思考和详解 参考代码 看前须知 要点介绍和简要声明. 考试回顾 格式控制输 ...

  9. BUAA(2021春)第一次上机选择+填空(含解析)

    看前须知 要点介绍和简要声明. 第一次上机题汇总 扩展字符A--strchr的灵活使用. 表达式求值. 小数形式与科学计数法转换(简)--分类讨论一定要有逻辑. 超长正整数的减法(高精度减法)+其他三 ...

最新文章

  1. python量化策略代码_手把手教你用三行python 代码做一个动量策略「量化投资系列」...
  2. Gradle sync failed: failed to find Build Tools revision 21.1.2
  3. LeanCloud数据更新不同步问题
  4. 基于corosync和NFS服务器实现LNMP的高可用
  5. ASP.NET MVC Beta 新特性之 IValueProvider
  6. python 线程类 threading.Thread.join() 方法 (自闭,不让别人进来了)
  7. sklearn自学指南(part61)--调整估计器的超参数
  8. 全局路径规划A star的Matlab实现
  9. 解决tomcat不支持中文路径的问题
  10. 数据库面试题之PL/SQL面试题
  11. jdbc mysql innodb 死锁 deadlock_Mysql InnoDB 数据更新/删除导致锁表
  12. paip.c++ 内存泄漏以及解决之道.
  13. 2020年中国旅游行业网络关注度分析报告
  14. php个人财务管理,PHP个人理财管理系统的设计与实现
  15. js中int转byte(-128—127)
  16. windows7 x64x86专业纯净版(usb3.0_nvme)2019.12.17
  17. 不再当码农-Flash AS3.0多个影片剪辑实现同一功能循环问题
  18. 计算机与宽带路由的连接步骤,电脑路由器连接图文教程
  19. 复现文件上传漏洞(靶场练习)
  20. matlab bwmorph spur,用python编写matlab的bwmorph(image,'spur')

热门文章

  1. Swan Song 第十一周Scrum Meeting
  2. LaTex 把上下标符号放在正上和正下方公式
  3. 三级菜单-输出各省各市各县各镇
  4. toString方法
  5. 怎么看公司邮箱服务器地址,如何判定企业邮箱厂商邮件服务器放置地区?
  6. 蒂姆·库克的五项核心领导力
  7. 33题实战“泰坦尼克号生存预测”全流程
  8. php舒享蛋白有哪些好处,老人吃蛋白粉有什么好处
  9. OutOfMemoryError系列(3): Permgen space
  10. 80后员工的12大缺点,管理他们需要18般兵器