PAT甲级 1009.Product of Polynomials(25) 题目翻译与答案
来源:互联网 发布:幼儿园美工活动反思 编辑:程序博客网 时间:2024/05/16 23:54
题目来源自PAT网站 https://www.patest.cn/
题目描述:
1009. Product of Polynomials (25)
This time, you aresupposed to find A*B where A and B are two polynomials.
InputSpecification:
Each input filecontains one test case. Each case occupies 2 lines, and each line contains theinformation of a polynomial: K N1 aN1 N2 aN2 ...NK aNK, where K is the number of nonzero terms in the polynomial, Niand aNi (i=1, 2, ..., K) are the exponents and coefficients,respectively. It is given that 1 <= K <= 10, 0 <= NK < ... < N2< N1 <=1000.
OutputSpecification:
For each test caseyou should output the product of A and B in one line, with the same format asthe input. Notice that there must be NO extra space at the end of each line.Please be accurate up to 1 decimal place.
SampleInput
2 1 2.4 0 3.2
2 2 1.5 1 0.5
SampleOutput
3 3 3.6 2 6.0 11.6
题目翻译:
1009.多项式的乘积
这一次,你需要计算出A*B,而A与B是两个多项式。
输入说明:
每个输入文件包含一个测试实例。每个实例有两行,每行是一个多项式的信息K N1 aN1 N2 aN2 ... NKaNK,K是多项式中非零项的个数,Ni和 aNi (i=1, 2, ..., K) 分别是指数和系数,且1 <= K <= 10, 0 <= NK < ... < N2 < N1<=1000。
输出说明:
对于每个测试实例,你应该在一行上输出A与B的乘积,格式同输入时一样。注意在每行的末尾不能有多余的空格。精确度到一位小数。
输入样例:
2 1 2.4 0 3.2
2 2 1.5 1 0.5
输出样例:
3 3 3.6 2 6.0 1 1.6
答案代码:
#include<cstdio>struct poly{int k;int exp[10];double coe[10];};struct polyPro{int k;int exp[100];double coe[100];};void inputPoly(poly &p){int i;scanf("%d",&(p.k));for(i=0;i<p.k;++i){scanf("%d",&(p.exp[i]));scanf("%lf",&(p.coe[i])); }}void outputPro(polyPro &p){int i;printf("%d",p.k);for(i=0;i<p.k;++i){if(p.coe[i]>-0.05 && p.coe[i]<0.05)continue;printf(" %d %.1lf",p.exp[i],p.coe[i]);}}void output(poly &p){//test functionint i;printf("%d ",p.k);for(i=0;i<p.k-1;++i)printf("%d %.1lf ",p.exp[i],p.coe[i]);printf("%d %.1lf\n",p.exp[i],p.coe[i]);}void exchange(polyPro &p,int i,int j){int ti;double td;ti=p.exp[i];p.exp[i]=p.exp[j];p.exp[j]=ti;td=p.coe[i];p.coe[i]=p.coe[j];p.coe[j]=td;}polyPro calPoly(poly &a,poly &b){polyPro p;int i1,i2,i3,i=0;int expT;double coeT;for(i1=0;i1<a.k;++i1)for(i2=0;i2<b.k;++i2){expT=a.exp[i1]+b.exp[i2];coeT=a.coe[i1]*b.coe[i2];for(i3=0;i3<i;++i3){if(expT==p.exp[i3]){p.coe[i3]+=coeT;coeT=0;}}if(coeT!=0){p.exp[i]=expT;p.coe[i]=coeT;i++;}}p.k=i;for(i1=0,i2=0;i1<p.k;i1++){if(p.coe[i1]>-0.05 && p.coe[i1]<0.05)i--;else{p.coe[i2]=p.coe[i1];p.exp[i2]=p.exp[i1];i2++;}}p.k=i2;int iMax;for(i1=0;i1<p.k-1;++i1){iMax=i1; for(i2=i1+1;i2<p.k;++i2){if(p.exp[iMax]<p.exp[i2])iMax=i2;}if(iMax!=i1)exchange(p,iMax,i1);}return p;}int main(){poly p1,p2;inputPoly(p1);inputPoly(p2);//output(p1); output(p2); polyPro p=calPoly(p1,p2);//printf("@@@@@@@@@@@@\n");outputPro(p); return 0;}
说明与心得:
我留下了代码的debug痕迹。
题目方法选择的不太好,尤其是输入有序这个条件我完全没有利用。反而用了选择排序。
- PAT甲级 1009.Product of Polynomials(25) 题目翻译与答案
- PAT甲级.1009. Product of Polynomials (25)
- 【PAT甲级】1009. Product of Polynomials (25)
- 1009. Product of Polynomials (25) PAT甲级
- PAT甲级1009. Product of Polynomials (25)
- PAT甲级1009. Product of Polynomials (25)
- pat甲级1009. Product of Polynomials (25)
- PAT甲级 1009. Product of Polynomials (25)
- PAT 甲级 1009. Product of Polynomials (25)
- PAT甲级 1002. A+B for Polynomials (25) 题目翻译与答案
- PAT 甲级 1009. Product of Polynomials
- [PAT-甲级]1009.Product of Polynomials
- PAT 甲级 1009. Product of Polynomials
- PAT(甲级)Product of Polynomials (25)
- 1009. Product of Polynomials (25)-PAT甲级真题
- 【PAT甲级】【C++】1009. Product of Polynomials (25)
- PAT TEST 甲级1009. Product of Polynomials (25)
- PAT甲级练习1009. Product of Polynomials (25)
- 使用canvas画的圆形水球波纹带进度条的效果,里面使用的是requestAnimationFrame方法(),所以动画的执行只在区域可见的时候才会执行
- python fabric 部署falcon tcp closewait monitor function
- windows系统c++多线程开发
- Android studio NDK开发简单实例
- Ros + cartographer 安装攻略
- PAT甲级 1009.Product of Polynomials(25) 题目翻译与答案
- YDB运维必读
- Linux下软件安装的几种方法
- 异步线程控制控件
- =>是es6语法中的arrow function
- EasyUI Window Cannot read property 'options' of undefined
- java类的初始化顺序
- 2017-02-17 随笔二
- C--最短路