第一行:多项式A的第一项的系数、指数(以空格分隔)
第一行:多项式A的第二项的系数、指数(以空格分隔)
...
第n行:多项式A的第n项的系数、指数(以空格分隔) (假设多项式A的项数为n)
(空行)
第一行:多项式B的第一项的系数、指数(以空格分隔)
第一行:多项式B的第二项的系数、指数(以空格分隔)
...
第m行:多项式B的第m项的系数、指数(以空格分隔) (假设多项式B的项数为m)
(空行)
第一行:加/减法计算后,结果多项式A的第一项的系数、指数(以空格分隔)
第一行:加/减法计算后,结果多项式A的第二项的系数、指数(以空格分隔)
...
第p行:加/减法计算后,结果多项式A的第n项的系数、指数(以空格分隔) (假设结果多项式的项数为p)
(多项式之间以空行分隔,如果多项式只包含“0”,则相应的多项式输出"0 0",不包含引号。)
输入范例 :
1
6
7 3 -22 9 5 -8
0 1 7 8 17 100
3
8 22 -9
1 7 8
输出范例 :
7 0
3 1
-22 7
9 8
5 17
-8 100
8 1
22 7
-9 8
7 0
-5 1
-44 7
18 8
5 17
-8 100
#include #include#include#include#include#include
using namespacestd;
typedefstructnode
{int factor;//系数
int index;//指数
struct node*next;
node(int fa) :factor(fa),next(0){}
}Node;void my_print(Node*head)
{
Node* p = head->next;if(!p)printf("%d %d\n",0, 0);while(p)
{
printf("%d %d\n", p->factor, p->index);
p= p->next;
}
}//创建带头节点的链表
Node* createList(intn)
{inti,val;
vectornode_vec;
Node* head = new Node(0);
node_vec.push_back(head);//头结点
for (i = 0; i < n; i++)
{
scanf("%d", &val);
node_vec.push_back(newNode(val));
}for (i = 1; i <= n; i++)
{
node_vec[i- 1]->next =node_vec[i];
scanf("%d", &val);
node_vec[i]->index =val;
}returnhead;
}
Node* my_fun(Node* la, Node* lb, intmode)
{
Node* pa=la->next, * pb=lb->next,* res=la,*res_tail=la;inttemp;while (pa &&pb)
{if (pa->index == pb->index)
{if (!mode)//+
temp = pa->factor + pb->factor;else//-
temp = pa->factor - pb->factor;if(temp)
{
res_tail->next =pa;
pa->factor =temp;
res_tail=pa;
}
pa= pa->next;
pb= pb->next;
}else if (pa->index < pb->index)
{
res_tail->next =pa;
res_tail=pa;
pa= pa->next;
}else{
res_tail->next =pb;
res_tail=pb;if (mode)pb->factor = -pb->factor;
pb= pb->next;
}
}
res_tail->next =NULL;if(pa)
res_tail->next =pa;while(pb)
{
res_tail->next =pb;
res_tail=pb;if (mode)pb->factor = -pb->factor;
pb= pb->next;
}returnres;
}intmain()
{int mode;//0 加 1减
scanf("%d", &mode);intn, i;
scanf("%d", &n);
Node* la =createList(n);
scanf("%d", &n);
Node* lb =createList(n);
my_print(la); cout<
my_print(lb); cout<
Node* res =my_fun(la, lb, mode);
my_print(res);return 0;
}