题意:
2 1 2.4 0 3.2 2 2 1.5 1 0.5
A 和 B 都是多项式,K代表后面有几项,
而<1, 2.4>与<0, 3.2>正好对应指数和系数,即
而<2, 1.5>与<1, 0.5>同理可得为
而相加刚好得到
,前面的3为非零项,后面紧接着为<2, 1.5>, <1, 2.9>, <0, 3.2>
3 2 1.5 1 2.9 0 3.2
思路 :
用TreeMap来解决,TreeMap默认升序排列,但是可以生成降序的descendingKeySet(),用<Integer, Double>的键值对刚好可以对应指数和系数,遍历完输入后将size和非零系数项输出。
import java.util.Scanner;
import java.util.TreeMap;
import java.util.Set;
public class Main {
public static void main(String[] ars) {
Scanner input = new Scanner(System.in);
TreeMap<Integer, Double> map = new TreeMap<>();
Set<Integer> entrySet = map.descendingKeySet();
for(int i=0; i<2; i++) {
int k = input.nextInt();
for(int j=0; j<k; j++) {
int exp = input.nextInt();
double coe = input.nextDouble();
if(!map.containsKey(exp))
map.put(exp, coe);
else
map.put(exp, coe + map.get(exp));
}
}
int size = entrySet.size();
if(size == 1) {
for(Integer entry: entrySet) {
if(map.get(entry).equals(Double.valueOf(0))) {
System.out.print("0");
return;
}
}
}
String output = "";
for(Integer entry: entrySet) {
if(map.get(entry).equals(Double.valueOf(0))) {
size--;
continue;
}
else
output += " " + entry + " " + String.format("%.1f", map.get(entry));
}
System.out.print(size + output);
input.close();
}
}