题意:
多项式相乘
分析:
1、多项式相乘很简单,只需要处理多个乘后指数相同的项,用map很好处理,然后需要记录总共有多少非零项即可
如果积中已经含有该指数项,则需要系数相加,count--;然后判断系数是否为零,不为零的话,项数count++,该指数入map;
java的Treemap,还可以自动排序,很好!!!
总结:
1、没有先好好分析,造成逻辑混乱,一直调调调!!!此时需要停下来想明白!!乱调一通是没有用的!!
2、发现如果一个人记住了java的所有类及其函数,就好像记住了周围的所有人,而且清楚的知道每个人的喜好,那么相处就会很容易了O(∩_∩)O~
package AdvancedLevelPractice;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
public class pat1009{
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
int n1 = scanner.nextInt();
int[] exp = new int[n1];
double[] coff = new double[n1];
for(int i = 0; i < n1; i++){
exp[i] = scanner.nextInt();
coff[i] = scanner.nextDouble();
}
int n2 = scanner.nextInt();
Map results = new TreeMap().descendingMap();
int exp1, exp2;
double coff1, coff2;
int count = 0;
for(int i = 0; i < n2; i++){
exp1 = scanner.nextInt();
coff1 = scanner.nextDouble();
for(int j = 0; j < n1; j++){
exp2 = exp1 + exp[j];
coff2 = coff1 * coff[j];
if(results.containsKey(exp2)){
coff2 += Double.parseDouble(String.valueOf(results.get(exp2)));
results.remove(exp2);
count--;
}
if(!String.format("%.1f",coff2).contains("0.0")){
count++;
results.put(exp2, coff2);
}
}
}
Iterator iterator = results.keySet().iterator();
System.out.print(count);
while (iterator.hasNext()) {
Object key = iterator.next();
System.out.print(" "+ String.valueOf(key)+" "+String.format("%.1f", results.get(key)));
}
scanner.close();
}
}