目录
1,题目描述
Sample Input:
2 1 2.4 0 3.2
2 2 1.5 1 0.5
Sample Output:
3 3 3.6 2 6.0 1 1.6
题目大意
多项式相乘。。。
2,思路
声明两个浮点类型数组,一个存放第一个多项式,另一个存放最终结果;接受完第一个多项式后,对第二个多项式,每输入一项计算一次;
注意
- 由于题目给出了最大规模,输入多项式设置规模为1000,结果多项式设置规模为2000!!!(相乘后最高次幂为2000)
- 理清多项式相乘的思路:第二个多项式的每一项乘以第一个多项式的所有项,并将结果存入结果数组中,即,output[j+n] += input[j] * a;(参数含义请看代码);
3,代码
#include<iostream>
using namespace std;
int main(){
//#ifdef ONLINE_JUDGE
//#else
// freopen("1.txt", "r", stdin);
//#endif
float output[2001] = {0.0f};
float input[1001] = {0.0f};
int k, n;
float a;
cin>>k;
for(int i = 0; i < k; i++){
cin>>n;cin>>a;
input[n] = a;
}
cin>>k;
for(int i = 0; i < k; i++){
cin>>n;cin>>a;
for(int j = 0; j < 1001; j++){
output[j+n] += input[j] * a;
}
}
k = 0;
for(int i = 0; i < 2001; i++){
if(output[i] != 0.0f) k++;
}
cout<<k;
for(int i = 2000; i >= 0; i--){
if(output[i] != 0.0f){
printf(" %d %.1f", i, output[i]);
}
}
return 0;
}