1002 A+B for Polynomials(25) java

题意:

2 1 2.4 0 3.2
2 2 1.5 1 0.5

A 和 B 都是多项式,K代表后面有几项,

而<1, 2.4>与<0, 3.2>正好对应指数和系数,即2.4x+3.2

而<2, 1.5>与<1, 0.5>同理可得为1.5x^{2}+0.5x

而相加刚好得到 1.5x^{2}+2.9x+3.2,前面的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();
	}
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值