py
本题py在输入方面会有一些麻烦,特殊处理下即可
from collections import defaultdict
Sum = defaultdict(float)# // Sum[i]代表多项式A和多项式B相加后的指数为i的项的系数
li = list(map(float,input().split()))
for i in range(1,len(li),2):
Sum[li[i]] += li[i + 1]
li = list(map(float,input().split()))
for i in range(1,len(li),2):
Sum[li[i]] += li[i + 1]
li = list(Sum.items())
li.sort(key= lambda item : -item[0])# 按指数大小进行降序排序
# print(len(Sum),end='') 这么写是错的,因为字典的大小不等于非零项的数量,因为存在两项相加为0的可能
cnt = 0 # 非零项的数量
for k,v in li:
if v != 0:
cnt += 1
print(cnt,end='')
for k,v in li:
if v == 0:
continue
print(" %d %.1f" % (k,v),end='')
c++
#include <iostream>
using namespace std;
const int N = 1010;
double a[N],b[N];// a[i]代表多项式A指数为i的项的系数;b[i]代表多项式B指数为i的项的系数
double sum[N];// sum[i]代表多项式A和多项式B相加后的指数为i的项的系数
int main(){
for(int i = 0;i < 2;i ++){
int k;
cin >> k;
for(int j = 0;j < k;j ++){
int e;// exponent n.指数
double c;// coefficient n.系数
cin >> e >> c;
if(i == 0){
a[e] = c;
}
else{
b[e] = c;
}
}
}
int cnt = 0;// 非零项的数量
for(int i = 0;i < N;i ++){
sum[i] = a[i] + b[i];
if(sum[i] != 0) cnt ++;
}
printf("%d",cnt);
for(int i = N;i >= 0;i --){
if(sum[i] != 0){
printf(" %d %.1f",i,sum[i]);
}
}
return 0;
}