描述:

设计一个一元稀疏多项式加法运算器,完成多项式a和b相加,建立多项式a+b。

输入说明:

一组输入数据,所有数据均为整数。第1行为2个正整数n,m,其中 n表示第一个多项式的项数,m表示第二个多项式的项数;第2行包含2n个整数,每两个整数分别表示第一个多项式每一项的系数和指数;第3行包含2m个整数,每两个整数分别表示第二个多项式每一项的系数和指数。(注:序列按指数升序排列)

输出说明:

在一行以类多项式形式输出结果,指数按从低到高的顺序。注意,系数值为1的非零次项的输出形式中略去系数1,如1x^2的输出形式为x^2,-1 x^2的输出形式为-x^2。

输入样例:

6 2

1 0 1 1 1 2 1 3 1 4 2 5

-1 3 -2 4

输出样例:

1+x+x^2-x^4+2x^5

下面贴上我写的代码:

 1 #include<stdio.h>
 2 #include<string.h>
 3 int main()
 4 {
 5     int a1[1000];
 6     int a2[1000];
 7     memset(a1,0,sizeof(a1));    //将a1数组所有元素初始化为0
 8     memset(a2,0,sizeof(a2));    //将a2数组所有元素初始化为0
 9     int n,m;
10     int t1,t2;       //每次取两个数,t1为系数,t2为相应的指数
11     scanf("%d %d",&n,&m);
12     for(int i=0;i<n;i++)        //将第一个式子保存在a1中,a1的每个元素表示式子的一个项,
13     {                           //元素的值为项的系数,元素下标为项的指数
14         scanf("%d %d",&t1,&t2);
15         a1[t2]=t1;
16     }
17     for (int i=0;i<m;i++)       //将第二个式子保存在a2中
18     {
19         scanf("%d %d",&t1,&t2);
20         a2[t2]=t1;
21     }
22     bool flag=true;             //flag标记当前项否是“和式”的第一项,flag为true时表示当前项是“和式”的第一项
23     for(int i=0;i<1000;i++)     //i表示项的指数,从0开始扫描
24     {
25         int k=a1[i]+a2[i];      //k为两个式子中指数为i的项的系数的和
26         if(k!=0)          //“和式”中有指数为i的项
27         {
28             if(i==0)            //如果此项的指数为0
29             printf("%d",k);
30             else if(i==1)       //如果此项的指数是1
31             {
32                 if(k==-1)       //如果此项的指数是1,且系数是-1
33                 printf("-X");
34                 else if(k==1)   //如果此项的指数是1,且系数是1
35                 flag ? printf("X") : printf("+X");
36                 else            //如果此项的指数是1,系数不是-1或1
37                 !flag&&k>0 ? printf("+%dX",k) : printf("%dX",k);
38             }
39             else                //如果此项的指数大于1
40             {
41                 if(k==-1)       //如果此项的指数大于1,且系数是-1
42                 printf("-X^%d",i);
43                 else if(k==1)   //如果此项的指数大于1,且系数是1
44                 flag ? printf("X^%d",i) : printf("+X^%d",i);
45                 else            //如果此项的指数大于1,且系数不是-1或1
46                 !flag&&k>0 ? printf("+%dX^%d",k,i) : printf("%dX^%d",k,i);
47             }
48             flag=false;
49         }
50     }
51     printf("\n");
52     return 0;
53 }

******

解题报告:

  这道题目在算法上没有困难,只是在数据结构和输出这两个方面需要一定技巧。

  首先是数据结构的设计,即如何把题目所给的两个多项式存储起来?上面代码使用两个数组a1和a2来分别保存两个多项式,当然也可以有其他方法。首先,用memset函数将a1和a2两个数组所有元素初始化为0,然后依次读入多项式的各个项,数组的下标表示多项式中项的指数,数组中下标所对应的值表示此项的系数。例如:如果a1[3]的值为-2,就表示第一个多项式中包括“-2X3”这一项,又如果a1[2]的值为0,那么说明第一个多项式中没有指数为2的项。

  输出方面一定要细心,仔细读题目的输出说明就会发现,当项的系数为0、-1、1这三个值时,输出格式和其它情况不同,而且某个项作为“和式”的首项和作为其他项,输出的格式是有差别的,差别在于首项前面是没有符号的,而其它想都需要在前面加上符号。

  第35行代码(此时项的系数为1),flag为真时表示此项为“和式”的首项,用语句printf("X")打印输出,flag为假时表示此项不是“和式”的首项,用语句printf("+X")打印输出;第44行代码与此类似。

  第37行代码(此时项的系数为1),只有flag为假并且项的系数是正数时,才会用printf("+%dX")打印输出,flag为真或项的系数为负数时用printf("%dX")打印输出;第46行代码与此类似。

转载于:https://www.cnblogs.com/sage-blog/p/4024727.html

一元稀疏多项式加法运算相关推荐

  1. 实习一 线性表及其应用 (题目:一元稀疏多项式的加法运算 )

    一.需求分析 1.输入并建立两个多项式: 2.多项式a与b相加,建立和多项式c: 3.输出多项式a,b,c.输出格式:比如多项式a为:A(x)=c1xe1+ c2xe2+-+ cmxem,其中,ci和 ...

  2. 已知稀疏多项式C语言版,一元稀疏多项式计算器C语言课程设计

    <一元稀疏多项式计算器C语言课程设计>由会员分享,可在线阅读,更多相关<一元稀疏多项式计算器C语言课程设计(26页珍藏版)>请在人人文库网上搜索. 1.学号2014-2015学 ...

  3. XDOJ 一元稀疏多项式计算器 C

    前言 让汗水成为铠甲,把困顿化为良机. 题干 问题描述 一元 n 次多项式p0 x^0+···+pi x^i···+pn x^n项数较少时成为一元稀疏多项式, 例如:3 + 6 x^3 − 2 x^8 ...

  4. java 一元稀疏多项式简单计算器,一元稀疏多项式计算器实验报告

    一元稀疏多项式计算器实验报告 课程名称:数据结构 实验名称: 一元稀疏多项式计算器 学 院:钱学森学院 实 验 日 期 2020年 05 月 08日 诚信承诺:我保证本实验报告中的程序和本实验报告是我 ...

  5. 设计一个一元稀疏多项式简单计算器

    目录 1.题目 2.需求分析 3.程序设计 4.测试结果 5.源码 1.题目 [问题描述] 设计一个一元稀疏多项式简单计算器. [基本要求] (1)输入并建立两个多项式: (2)多项式a与b相加,建立 ...

  6. 完整版一元稀疏多项式计算器

    一元稀疏多项式计算器 [问题描述]: 设计一个一元稀疏多项式简单计算器. [基本要求]: 一元稀疏多项式简单计算器的基本功能是: (1)输出并建立多项式: (2)输出多项式,输出形式为整数序列:n,c ...

  7. 基于Java实现的一元稀疏多项式计算器

    资源下载地址:https://download.csdn.net/download/sheziqiong/85896976 资源下载地址:https://download.csdn.net/downl ...

  8. 基于Java语言实现一元稀疏多项式计算器【100010608】

    1.实验内容 一元稀疏多项式计算器 使用语言:Java 语言 编译环境:openJDk-1.8 2.问题描述 设计一个简易的一元稀疏多项式计算器. 3.需求分析 经过分析,本系统需完成的主要功能如下: ...

  9. 用java的jni调用C语言的API,实现带图形界面的一元稀疏多项式计算器

    实现步骤: 1) 完成Java代码,编写好Java调用类. 2) 编译你的Java类. 3) 用javah生成编译好的class文件对应的C/C++ 函数的头文件. 4) 实现头文件中的函数原型,编写 ...

  10. java 一元稀疏多项式简单计算器_一元稀疏多项式简单的计算器

    共回答了25个问题采纳率:92% 一元稀疏多项式计算器设计程序代码 #include #include #include #include #define maxlen 10 #define larg ...

最新文章

  1. JDBC编程的事务处理
  2. 计算机硬盘怎么增加e盘和f盘,如何在我的电脑里新建一个磁盘区
  3. python3安装-Centos 安装 Python3
  4. 小试牛刀chrome来调试APP
  5. emc存储java打开后报错_连接EMC存储系统 - osc_mk8rqvg4的个人空间 - OSCHINA - 中文开源技术交流社区...
  6. OpenGL 学习 显示列表
  7. (44)VHDL实现多路复用器(if-else)
  8. 常用浏览器的编码设置
  9. CommonJS的值拷贝与ES6的动态映射
  10. aswing学习笔记2-不规则外框-请教思路
  11. gitter 卸载_最佳Gitter渠道:学习编码
  12. 遗传算法(GA)解决MTSP问题及Matlab代码
  13. Pascal VOCdata数据集读取(pytorch)
  14. 利用pyechart绘制简单的迁徙流向图、世界地图
  15. taro 项目中接入EChart图表库
  16. jquery事件代理
  17. css3倒数两个,:nth-last-child()
  18. 网络游戏运营策略分析
  19. CF1428 E. Carrots for Rabbits 贪心+优先队列
  20. 吴恩达机器学习——第三周学习笔记

热门文章

  1. 罗永浩重新定义直播带货
  2. 未来五年最具前景的一门编程语言是什么?
  3. 别在分答上问我问题了
  4. dump文件_windows程序崩溃时生成dump文件方法
  5. Make a Crystal UVA - 11014 (容斥定理)
  6. 模拟处理机作业调度---短作业优先调度算法
  7. Java中 intValue,parseInt,Valueof 这三个关键字的区别
  8. 国产数据库助力民航核心交易系统
  9. Component 初识组件
  10. [bzoj4826][Hnoi2017]影魔