1002. A+B for Polynomials (25)

来源:互联网 发布:手机淘宝到货退款流程 编辑:程序博客网 时间:2024/06/05 05:35

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<

#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[N];    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;}
0 0
原创粉丝点击