0
点赞
收藏
分享

微信扫一扫

Java基础(数组)——多项式加法

老王420 2022-04-14 阅读 69
javaeclipse

题目内容:

一个多项式可以表达为x的各次幂与系数乘积的和,比如:

2x6+3x5+12x3+6x+20

现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出。

程序要处理的幂最大为100。

输入格式:

总共要输入两个多项式,每个多项式的输入格式如下:

每行输入两个数字,第一个表示幂次,第二个表示该幂次的系数,所有的系数都是整数。第一行一定是最高幂,最后一行一定是0次幂。

注意第一行和最后一行之间不一定按照幂次降低顺序排列;如果某个幂次的系数为0,就不出现在输入数据中了;0次幂的系数为0时还是会出现在输入数据中。

输出格式:

从最高幂开始依次降到0幂,如:

2x6+3x5+12x3-6x+20

注意其中的x是小写字母x,而且所有的符号之间都没有空格,如果某个幂的系数为0则不需要有那项。

输入样例:

6 2

5 3

3 12

1 6

0 20

6 2

5 3

2 12

1 6

0 20

输出样例:

4x6+6x5+12x3+12x2+12x+40

时间限制:500ms内存限制:32000kb

注:多项式系数为±1时的输出、指数为1时的输出、符号输出

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in=new Scanner(System.in);
		int x,y;
		int[] arr=new int[105];
		do{                    //读取第一个多项式
			x=in.nextInt();
			y=in.nextInt();
			arr[x]+=y;
		}while(x!=0);
		do{                    //读取第二个多项式
			x=in.nextInt();
			y=in.nextInt();
			arr[x]+=y;
		}while(x!=0);
		boolean flag=true;    //符号输出标识
		for(int i=arr.length-1;i>=0;i--) {
			if(arr[i]!=0) {
				if(flag) {    //符号输出判断
					flag=false;
				}
				else {
					if(arr[i]>0){
						System.out.print("+");
					}
					else if(arr[i]<0) {
						System.out.print("-");
					}
				}
				if(arr[i]==1||arr[i]==-1) {    //系数为1或-1
					if(i==0) {                 //指数为0
						System.out.print("1");
					}
					else if(i==1) {            //指数为1
						System.out.print("x");
					}
					else {
						System.out.print("x" + i);
					}
				}else {                        //系数不为1或-1
					if(i==0) {                 //指数为0
						System.out.print(Math.abs(arr[i]));
					}
					else if(i==1) {            //指数为1
						System.out.print(Math.abs(arr[i]) + "x");
					}
					else {
						System.out.print(Math.abs(arr[i]) + "x" + i);
					}
				}
			}	
		}
		if(flag)System.out.print(0);            //多项式和系数都为0
		in.close();
	}
}
举报

相关推荐

0 条评论