多項式のためのPAT A1002 A + B(25分)

この時間は、あなたはAとB、2つの多項式であるA + Bを見つけることになっています。

入力仕様:

各入力ファイルには、1つのテストケースが含まれています。各ケースには2行を占め、各ラインは、多項式の情報が含まれている:
KN 1 N1 N 2 、N 2 ... N K NK
K多項式における非ゼロ項の数であり、N I及びANIは、(私は1 = 、2、⋯、K)は、それぞれ、指数および係数です。それが与えられること1≤K≤10,0≤N K <⋯<N 2 <N 1 ≤1000。

出力仕様:

各テストケースのためには、入力と同じ形式の1つのラインの出力AとBの合計を、すべきです。各行の末尾に余分なスペースがなければならないことに注意してください。小数第1位まで正確でください。

サンプル入力:

2 1 2.4 0 3.2
2 2 1.5 1 0.5

サンプル出力:

3 2 1.5 1 2.9 0 3.2

質問の意味:

2つの多項式の出力形式の和(非ゼロインデックス降順出力):
非ゼロインデックスの非ゼロ係数の非ゼロエントリ番号...

アイデア:

(1)は、多項式の和と入力2つの多項式を記憶し、A、B、Cの3つの浮動小数点の配列を受け取り、添字インデックス、対応する係数値;
(2)A、Bを一つずつ追加されますC得られ、非ゼロエントリの出力Cの数、下り出力インデックスと係数c。

コード:

#include <cstdio>
#include <iostream>
#include <iomanip>
using namespace std;
const int maxn=1010;
int main(){
	int k1,k2,n1,n2,count=0;
	double a1,a2,a[maxn]={},b[maxn]={},c[maxn]={};
	cin>>k1;
	for(int i=0;i<k1;i++){
		cin>>n1>>a1;
		a[n1]=a1;
	}
	cin>>k2;
	for(int i=0;i<k2;i++){
		cin>>n2>>a2;
		b[n2]=a2;
	}
	for(int i=0;i<maxn;i++){
		c[i]=a[i]+b[i];
		if(c[i]!=0){
			count++;
		}
	}
	cout<<count;
	cout<<setiosflags(ios::fixed)<<setprecision(1);//保留1位小数点输出
	for(int i=maxn-1;i>=0;i--){
		if(c[i]!=0)
		cout<<' '<<i<<' '<<c[i];
	}
	return 0;
}

用語集:

多項式の多項式
係数の係数の
指数インデックス

公開された26元の記事 ウォンの賞賛0 ビュー497

おすすめ

転載: blog.csdn.net/PanYiAn9/article/details/101550163