pat1002A+B for Polynomials (25)
2015-10-02 12:09
363 查看
题意分析:
(1)输入两个多项式,每个多项式按照:项数 指数 系数 ...格式输入,按照此格式输出两个多项式的和
(2)项数和指数均为正整数,系数为小数,很自然联想到开辟一个浮点数的数组,下标用来表示指数,数组元素用来表示系数,用浮点数组来表示多项式,节省了额外空间
(3)当输入完第一个多项式后,第二个多项式的输入和加法操作依然可以在之前的浮点数组之上操作,进一步节省空间和时间
可能坑点:
(1)当同类项相加时,当第一个多项式对应项的系数为0时,此时结果项数+1
(2)同类项相加后系数为0时,结果项数-1
(3)除此之外,项数不变
(1)输入两个多项式,每个多项式按照:项数 指数 系数 ...格式输入,按照此格式输出两个多项式的和
(2)项数和指数均为正整数,系数为小数,很自然联想到开辟一个浮点数的数组,下标用来表示指数,数组元素用来表示系数,用浮点数组来表示多项式,节省了额外空间
(3)当输入完第一个多项式后,第二个多项式的输入和加法操作依然可以在之前的浮点数组之上操作,进一步节省空间和时间
可能坑点:
(1)当同类项相加时,当第一个多项式对应项的系数为0时,此时结果项数+1
(2)同类项相加后系数为0时,结果项数-1
(3)除此之外,项数不变
#include <iostream> #include <iomanip> using namespace std; double poly[1001]={0}; int main() { int num1,num2,exp; double coeff; int i=0,j=0,count; cin>>num1; count=num1; while(i<num1) { cin>>exp>>coeff; poly[exp]=coeff; i++; } cin>>num2; while(j<num2) { cin>>exp>>coeff; if(poly[exp]==0) { poly[exp]=coeff; count++; } else { poly[exp]+=coeff; if(poly[exp]==0)count--; } j++; } cout<<count; for(int j=1000;j>=0;j--) { if(poly[j]!=0) { cout<<" "<<j; cout<<" "<<setiosflags(ios::fixed)<<setprecision(1)<<poly[j]; } } cout<<endl; return 0; }
相关文章推荐
- WERTYU
- JavaScript权威指南学习之第4章 表达式和运算符
- 判断浮点数是否等于0
- Git 操作标签
- JQuery的Ajax()向后台传参方式
- 文章标题
- 三大框架学习之----struts2 通配符的使用(二)
- 可视化编程
- How many Fibs?(java)
- Memcached完全解剖–1. memcached基金会
- 纯数字验证码
- java篇 【11】Java中常用的内存区域
- NFS java 操作和SMB服务器的操作
- 【软件工程】第三章 需求分析定义
- 注册码破解解密
- Git 创建标签
- 通信 ≠ 通讯,串口通信概念,同步与异步的区别
- VARCHAR2 他们占几个字节? NLS_LENGTH_SEMANTICS,nls_language
- spring mvc随笔
- 升级iOS9和Xcode7后应用崩溃解决方案