1002. A+B for Polynomials (25)
2015-09-01 23:18
381 查看
This time, you are supposed to find A+B where A and B are two polynomials.
Input
Each input file contains one test case. Each case occupies 2 lines, and each line contains the information of a polynomial: K N1 aN1 N2 aN2 … NK aNK, where K is the number of nonzero terms in the polynomial, Ni and aNi (i=1, 2, …, K) are the exponents and coefficients, respectively. It is given that 1 <= K <= 10,0 <= NK < … < N2 < N1 <=1000.
Output
For each test case you should output the sum of A and B in one line, with the same format as the input. Notice that there must be NO extra space at the end of each line. Please be accurate to 1 decimal place.
Sample Input
2 1 2.4 0 3.2
2 2 1.5 1 0.5
Sample Output
3 2 1.5 1 2.9 0 3.2
天天进步:
1、#include &cout<
Input
Each input file contains one test case. Each case occupies 2 lines, and each line contains the information of a polynomial: K N1 aN1 N2 aN2 … NK aNK, where K is the number of nonzero terms in the polynomial, Ni and aNi (i=1, 2, …, K) are the exponents and coefficients, respectively. It is given that 1 <= K <= 10,0 <= NK < … < N2 < N1 <=1000.
Output
For each test case you should output the sum of A and B in one line, with the same format as the input. Notice that there must be NO extra space at the end of each line. Please be accurate to 1 decimal place.
Sample Input
2 1 2.4 0 3.2
2 2 1.5 1 0.5
Sample Output
3 2 1.5 1 2.9 0 3.2
天天进步:
1、#include &cout<
#include <iostream> using namespace std; #include<iomanip> struct Node { double coef; int exp; }; int sum(Node* firstList,int M,Node* secondList,int N,Node* sumList); int main() { int M,N; cin>>M; Node *firstList=new Node[M]; for(int i=0;i<M;i++) { double xiShu; int zhiShu; cin>>zhiShu>>xiShu; firstList[i].coef=xiShu; firstList[i].exp=zhiShu; } cin.clear();//重置错误输入 cin.sync();//清空缓冲区 cin>>N; Node *secondList=new Node ; for(int i=0;i<N;i++) { double xiShu; int zhiShu; cin>>zhiShu>>xiShu; secondList[i].coef=xiShu; secondList[i].exp=zhiShu; } Node *sumList=new Node[M+N]; int num=sum(firstList,M,secondList,N,sumList); delete firstList; delete secondList; cout<<num; for(int i=0;i<num;i++) { cout<<" "<<sumList[i].exp<<" "<<fixed<<setprecision(1)<<sumList[i].coef; } delete sumList; return 0; } int sum(Node* firstList,int M,Node* secondList,int N,Node* sumList) { int i=0,j=0,k=0,t=0; while(i<M&&j<N) { if(firstList[i].exp>secondList[j].exp) { sumList[k].exp=firstList[i].exp; sumList[k].coef=firstList[i].coef; i++; } else if(firstList[i].exp<secondList[j].exp) { sumList[k].exp=secondList[j].exp; sumList[k].coef=secondList[j].coef; j++; } else { sumList[k].exp=firstList[i].exp; t=firstList[i].coef+secondList[j].coef; if(t!=0) sumList[k].coef=firstList[i].coef+secondList[j].coef; else k--; i++; j++; } k++; } while(j<N) { sumList[k].exp=secondList[j].exp; sumList[k].coef=secondList[j].coef; j++; k++; } while(i<M) { sumList[k].exp=firstList[i].exp; sumList[k].coef=firstList[i].coef; i++; k++; } return k; }
相关文章推荐
- scala实现设计模式之迭代器模式
- JAVA8
- redhat-7.0下使用qemu-img批量搭建虚拟机
- Getting Started with JPA and Eclipse
- 坦克大战
- 线段树(询问、插入)&树状数组POJ2352Starts解题报告
- Memcached
- using public key to decrypt data
- AWR format 工具的使用
- XML的基本知识点
- C++ 中指针与引用的区别
- 转身,等待
- 随笔
- 在 Linux 中使用日志来排错
- CF574B Bear and Three Musketeers 简单的图,暴力
- 吸收马尔可夫链
- 停止调试 IIS 不退出
- iOS开发~复用代码片段
- ubuntu-11.04-alternate-i386.iso 的下载地址
- java基础 面向对象1