PAT 1002
2016-06-04 21:45
288 查看
这道题就是求两个多项式相加,思路简单,但是千万要注意特例,如果相加后多项式的系数为0,这一项就不要,这道题主要就是这个坑,看代码吧。
题目链接https://www.patest.cn/contests/pat-a-practise/1002
#include<iostream> #include<algorithm> #include<iomanip> using namespace std; struct node{ int ni; double ani; }; int main(){ node a[1000]; node b[1000]; node c[1000]; int k1; int k2; cin>>k1; for(int i=0;i<k1;i++){ cin>>a[i].ni; cin>>a[i].ani; } cin>>k2; for(int j=0;j<k2;j++){ cin>>b[j].ni; cin>>b[j].ani; } int max=0; int i=0; int k=0; int j=0; while(i<k1&&k<k2){ if(a[i].ni==b[k].ni){ c[j].ni=a[i].ni; c[j].ani=a[i].ani+b[k].ani; i++; k++; j++; } else{ if(a[i].ni>b[k].ni){ c[j].ni=a[i].ni; c[j].ani=a[i].ani; i++; j++; } else { c[j].ni=b[k].ni; c[j].ani=b[k].ani; k++; j++; } } } while(i<k1){ c[j].ni=a[i].ni; c[j].ani=a[i].ani; i++; j++; } while(k<k2){ c[j].ni=b[k].ni; c[j].ani=b[k].ani; j++; k++; } max=j; j=0; for( i=0;i<max;i++){ if(c[i].ani!=0){ c[j].ni=c[i].ni; c[j].ani=c[i].ani; j++; } } max=j; if(max==0){ cout<<0; } else{ cout<<max; for(int i=0;i<max;i++){ cout<<" "<<c[i].ni<<" "<<fixed<<setprecision(1)<<c[i].ani; } } cout<<endl; return 0; }
相关文章推荐
- libdvbpsi源码分析(四)PAT表解析/重建
- PAT配置
- 什么是端口复用动态地址转换(PAT) 介绍配置实例
- MikroTik layer7-protocol
- PAT是如何工作的
- PAT 乙级题:1002. 写出这个数 (20)
- PAT (Advanced Level) Practise 1001-1010
- 数据结构学习与实验指导(一)
- PAT Basic Level 1001-1010解题报告
- PAT 数素数
- PAT 福尔摩斯的约会
- PAT 德才论
- PAT 月饼
- 1001. 害死人不偿命的(3n+1)猜想
- 1002. 写出这个数
- 1032. 挖掘机技术哪家强
- 1001. 害死人不偿命的(3n+1)猜想 (PAT basic)
- 1002. 写出这个数(PAT Basic)
- 1004. 成绩排名(PAT Basic)
- 1006. 换个格式输出整数(PAT Basic)