PTA 02-线性结构2 一元多项式的乘法与加法运算
2017-09-20 00:11
239 查看
02-线性结构2 一元多项式的乘法与加法运算(20 分)
设计函数分别求两个一元多项式的乘积与和。
输入格式:
输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
输出格式:
输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。
输入样例:
4 3 4 -5 2 6 1 -2 0 3 5 20 -7 4 3 1
输出样例:
15 24 -25 22 30 21 -10 20 -21 8 35 6 -33 5 14 4 -15 3 18 2 -6 1 5 20 -4 4 -5 2 9 1 -2 0
这一题我用了蛮长的时间debug,最后救我的是几串数字。
例子输入与输出:
序号 | 输入 | 输出 |
---|---|---|
1 | 4 3 4 -5 2 6 1 -2 0 3 5 20 -7 4 3 1 | 15 24 -25 22 30 21 -10 20 -21 8 35 6 -33 5 14 4 -15 3 18 2 -6 1 5 20 -4 4 -5 2 9 1 -2 0 |
2 | 2 1 2 1 0 2 1 2 -1 0 | 1 4 -1 0 2 2 |
3 | 2 -1000 1000 1000 0 2 1000 1000 -1000 0 | -1000000 2000 2000000 1000 -1000000 0 0 0 |
4 | 0 1 999 1000 | 0 0 999 1000 |
贴上代码:
#include<iostream> using namespace std; struct nood{ int trad; int index; }; int main() { int n,m; nood c1[1000]; nood c2[1000]; nood c3[2000]; nood c4[2000]; cin>>n; for(int i=0;i<n;i++) { cin>>c1[i].trad>>c1[i].index; } cin>>m; int k1=0,k2=0; for(int i=0;i<m;i++) { cin>>c2[i].trad>>c2[i].index; } for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { c3[k1].trad=c1[j].trad*c2[i].trad; c3[k1].index=c1[j].index+c2[i].index; k1++; } } for(int j=0,i=0;j<m||i<n;) { if(c1[i].index!=c2[j].index&&j!=m&&i!=n) { if(c1[i].index>c2[j].index) { c4[k2].trad=c1[i].trad; c4[k2].index=c1[i].index; k2++; i++; } else { c4[k2].trad=c2[j].trad; c4[k2].index=c2[j].index; k2++; j++; } } else if(c1[i].index==c2[j].index&&j!=m&&i!=n) { c4[k2].trad=c1[i].trad+c2[j].trad; c4[k2].index=c1[i].index; k2++; i++,j++; } else { if(j==m&&i<n) { c4[k2].trad=c1[i].trad; c4[k2].index=c1[i].index; k2++; i++; } if(j<m&&i==n) { c4[k2].trad=c2[j].trad; c4[k2].index=c2[j].index; k2++; j++; } } } for(int i=0;i<k1-1;i++) { for(int j=i+1;j<k1;j++) { if(c3[i].index==c3[j].index) { c3[i].trad+=c3[j].trad; for(int z=j+1;z<k1;z++) { c3[z-1].trad=c3[z].trad; c3[z-1].index=c3[z].index; } k1--; } } } for(int i=0;i<k2-1;i++) { if(c4[i].trad==0) { for(int j=i+1;j<k2;j++) { c4[j-1].trad=c4[j].trad; c4[j-1].index=c4[i].index; } k2--; } } if(c4[k2-1].trad==0) k2--; for(int i=0;i<k1-1;i++) { if(c3[i].trad==0) { for(int j=i+1;j<k1;j++) { c3[j-1].trad=c3[j].trad; c3[j-1].index=c3[j].index; } k1--; } } if(c3[k1-1].trad==0) k1--; int cnt=0; for(int i=0;i<k1;i++) { if(!cnt) cout<<c3[i].trad<<" "<<c3[i].index; else cout<<" "<<c3[i].trad<<" "<<c3[i].index; cnt++; } if(!cnt) cout<<"0 0"; cout<<endl; cnt=0; for(int i=0;i<k2;i++) { if(cnt) cout<<" "; cout<<c4[i].trad<<" "<<c4[i].index; cnt++; } if(!cnt) cout<<"0 0"; cout<<endl; //cout<<c4[k2-1].trad<<" "<<c4[k2-1].index; return 0; }
相关文章推荐
- 一元多项式的乘法与加法运算 PTA02-线性结构1
- 02-线性结构2 一元多项式的乘法与加法运算 (20分)
- 02-线性结构1 一元多项式的乘法与加法运算[网易云课堂-数据结构]
- 02-线性结构1 一元多项式的乘法与加法运算
- 02-线性结构2 一元多项式的乘法与加法运算 (20分)
- 02-线性结构2 一元多项式的乘法与加法运算
- 02-线性结构2 一元多项式的乘法与加法运算
- 02-线性结构2 一元多项式的乘法与加法运算(20 分) 用结构数组的方法
- 02-线性结构1 一元多项式的乘法与加法运算
- 02-线性结构1 一元多项式的乘法与加法运算
- 02-线性结构2 一元多项式的乘法与加法运算 (20分)
- [PAT] 02-线性结构2 一元多项式的乘法与加法运算
- 02-线性结构2 一元多项式的乘法与加法运算 (20分)
- 02-线性结构2 一元多项式的乘法与加法运算
- 02-线性结构2 一元多项式的乘法与加法运算(20 分)
- 02-线性结构2 一元多项式的乘法与加法运算 (20分)
- 线性结构CT 02-线性结构1 一元多项式的乘法与加法运算
- 网易云课堂-陈越、何钦铭-数据结构-2016春,02-线性结构1 一元多项式的乘法与加法运算,学习笔记
- 02 - 线性结构 2 一元多项式的乘法与加法运算 (20 分)
- 数据结构 PAT 02-线性结构1 一元多项式的乘法与加法运算