1009

题意:

多项式相乘

分析:

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

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值