版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://cloud.tencent.com/developer/article/1535012
设计函数分别求两个一元多项式的乘积与和。
输入分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
void show(map<int,int>mult){
auto it=mult.end();
++it++;
for(;it!=mult.begin();it--){
cout<<it->second<<" "<<it->first<<" ";
}it--;
cout<<mult.begin()->second<<" "<<mult.begin()->first<<endl;
}
#include<iostream>
#include<map>
using namespace std;
void show(map<int,int>mult){
auto it=mult.end();
++it++;
for(;it!=mult.begin();it--){
cout<<it->second<<" "<<it->first<<" ";
}it--;
cout<<mult.begin()->second<<" "<<mult.begin()->first<<endl;
}
int main(){
map<int,int>m1;
map<int,int>m2;
map<int,int>add;//+
map<int,int>mult;//*
int n;
cin>>n;
for(int i=0;i<n;i++){
int a,b;
cin>>a>>b;
m1[b]=a;
add[b]+=a;
}cin>>n;
for(int i=0;i<n;i++){
int a,b;
cin>>a>>b;
m2[b]=a;
add[b]+=a;
}for(auto it=m1.begin();it!=m1.end();it++){
for(auto it2=m2.begin();it2!=m2.end();it2++){
mult[it->first+it2->first]+=it->second*it2->second;
}
}
show(mult);
show(add);
return 0;
}