注意事项:
- 系数为 0 的多项式要取消
- 小数点保留到一位
- 浮点数比较用 long
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Map<Integer, Double> map = new TreeMap<>();
// 读取数据
for (int i = 0; i < 2; i++){
int len = in.nextInt();
while (len-- > 0){
int exponent = in.nextInt();
map.put(exponent, map.getOrDefault(exponent, 0.0) + in.nextDouble());
}
}
// 删除系数为 0 的数据
Set<Integer> keySet = map.keySet();
Iterator<Map.Entry<Integer, Double>> iter = map.entrySet().iterator();
while (iter.hasNext()){
Map.Entry<Integer, Double> entry = iter.next();
if (Math.round(entry.getValue()) == 0){
iter.remove();
}
}
// 按降序排列
System.out.print(map.size());
List<Integer> keyList = new ArrayList<>(keySet);
Collections.sort(keyList, Collections.reverseOrder());
for (int i: keyList){
// 注意格式需要保留到小数点后一位
System.out.printf(" " + i + " %.1f", map.get(i));
}
}
}