您的位置:首页 > 其它

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<

#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: