PAT 甲级 1002 A+B for Polynomials Java

import java.util.ArrayList;
import java.util.Scanner;

public class Main{
	public static void main(String args[]){
		Scanner scanner = new Scanner(System.in);
		int counta = scanner.nextInt();
		ArrayList<Integer> a1 = new ArrayList<Integer>();
		ArrayList<Float> a2 = new ArrayList<Float>();
		ArrayList<Integer> b1 = new ArrayList<Integer>();
		ArrayList<Float> b2 = new ArrayList<Float>();
		ArrayList<Integer> c1 = new ArrayList<Integer>();
		ArrayList<Float> c2 = new ArrayList<Float>();
		for(int i=0;i<counta;i++){
			a1.add(scanner.nextInt());
			a2.add(scanner.nextFloat());
		}
		scanner.nextLine();
		int countb = scanner.nextInt();
		for(int i=0;i<countb;i++){
			b1.add(scanner.nextInt());
			b2.add(scanner.nextFloat());
		}
		int indexa = 0,indexb = 0;
		int tempa = 0,tempb = 0;
		while(indexa<a1.size()&&indexb<b1.size()){
			tempa=a1.get(indexa);
			tempb=b1.get(indexb);
			if(tempa==tempb){
				//若系数抵消,则不计入arraylist
				if(a2.get(indexa)+b2.get(indexb)!=0){
					c1.add(tempa);
					c2.add(a2.get(indexa)+b2.get(indexb));
				}
				indexa++;
				indexb++;
			}else if(tempa>tempb){
				c1.add(tempa);
				c2.add(a2.get(indexa));
				indexa++;
			}else{
				c1.add(tempb);
				c2.add(b2.get(indexb));
				indexb++;
			}
		}
		while(indexa<a1.size()){
			tempa=a1.get(indexa);
			c1.add(tempa);
			c2.add(a2.get(indexa));
			indexa++;
		}
		while(indexb<b1.size()){
			tempb=b1.get(indexb);
			c1.add(tempb);
			c2.add(b2.get(indexb));
			indexb++;
		}
		/*System.out.println(a1);
		System.out.println(a2);
		System.out.println(b1);
		System.out.println(b2);
		System.out.println(c1);
		System.out.println(c2);*/
		System.out.print(c1.size());
		if(c1.size()!=0) System.out.print(" ");//若最终结果为0,则末尾不加空格
		for(int i=0;i<c1.size();i++){
			System.out.print(c1.get(i)+" ");
			System.out.print(String.format("%.1f", c2.get(i)));
			if(i!=c1.size()-1) System.out.print(" ");
		}
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值