この時間は、あなたは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;
}
用語集:
多項式の多項式
係数の係数の
指数インデックス