pat-1002 A+B for Polynomials (25分)

一些看法和解释都在注释里面,因为第一次刷题目,所以总结先放着。但是这段代码里面还是有重复的部分,可以去进行提取。

//指数:exponents
//系数:coefficients 
#include <iostream>
using namespace std;
const int N=1010;
//k表示非0项的数量,Ni表示指数,aNi系数 .
//开一个数组表示 ,X[i]表示X的i次方对应的系数 
double a[N],b[N],c[N];//第一个多项式记在a[N]中,第二个多项式记在b[N]中 
//结果放在c[N]中 
int main(){
	int k;
	cin>>k;
	while(k--){ //读入第一个多项式 
	//次数和系数交替读入 
	//n:次数, v:系数 
		int n;//指明有多少个多项式 ,
		//4x2+2x+3
		double v;// 
		//v的x ,n次方 
		cin>>n>>v;
		a[n]=v; //指明某指数项对应的系数 
	}
	cin>>k;//读入非零项的个数
	while(k--){
		int n;
		double v;
		cin>>n>>v;
		b[n]=v;
	} 
	//求和:i代表的是指数,数组索引的位置代表系数 
	for(int i=0;i<N;i++) c[i]=a[i]+b[i];
	int cnt=0;//统计项式
	for(int i=0;i<N;i++) 
		if(c[i])
			cnt++;
	cout<<cnt;
	//次数高向次数低去进行输出 
	for(int i=N-1;i>=0;i--){
		if(c[i])
			printf(" %d %.1f",i,c[i]);
	}
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/weixin_44110100/article/details/106903998