如题,多项式用数组存就行,用以次数为键的TreeMap存就不行,有错误。看看也不知道是哪出了错,记下来。希望有大佬看到可以指点一二。
题目在https://pintia.cn/problem-sets/994805342720868352/problems/994805526272000000
大概意思是输入两行多项式,每个N和a分别是次数和系数,最后需要按格式打印出多项式和。(系数保留一位小数)
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
extracted();
}
/**
* 数组存多项式和
*/
private static void extracted1() {
Scanner scanner = new Scanner(System.in);
float[] floats = new float[1001];
int K = scanner.nextInt();
while (K-- > 0)
floats[scanner.nextInt()] += scanner.nextFloat();
K = scanner.nextInt();
while (K-- > 0)
floats[scanner.nextInt()] += scanner.nextFloat();
int count = 0;
for (int i = floats.length - 1; i >= 0; i--)
if(floats[i]<=-0.5||floats[i]>=0.5)
count ++;
System.out.print(count);
for (int i = floats.length - 1; i >= 0; i--) {
if(floats[i]<=-0.5||floats[i]>=0.5)
System.out.print(" "+i+" "+String.format("%.1f",floats[i]));
}
}
/**
* TreeMap存多项式和
*/
private static void extracted() {
Scanner scanner = new Scanner(System.in);
TreeMap<Integer, Float> treeMap = new TreeMap<>();
int K = scanner.nextInt();
for (int i = 0; i < K; i++) {
int N = scanner.nextInt();
float a = scanner.nextFloat();
treeMap.put(N, treeMap.getOrDefault(N,0f) + a);
}
K = scanner.nextInt();
for (int i = 0; i < K; i++) {
int N = scanner.nextInt();
float a = scanner.nextFloat();
treeMap.put(N, treeMap.getOrDefault(N,0f) + a);
}
System.out.print(treeMap.size());
String s = "";
for (Map.Entry<Integer, Float> integerFloatEntry : treeMap.entrySet()) {
if(integerFloatEntry.getValue() <= -0.5 || integerFloatEntry.getValue() >= 0.5)
s = " "+integerFloatEntry.getKey()+" "+String.format("%.1f",integerFloatEntry.getValue())+s;
}
System.out.println(s);
}
}