1009

来源:互联网 发布:中世纪2优化9火炮 编辑:程序博客网 时间:2024/06/05 16:12

题意:

多项式相乘

分析:

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 stubScanner 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();}}


0 0
原创粉丝点击