1
多項式加法(5分)
題目內容:
一個多項式可以表達為x的各次冪與系數乘積的和,比如:
現在,你的程序要讀入兩個多項式,然后輸出這兩個多項式的和,也就是把對應的冪上的系數相加然后輸出。
程序要處理的冪最大為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
import java.util.Scanner;
public class hello
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
//多項式
Scanner in = new Scanner(System.in);
int[] a,b; //存放兩個多項式
int max=0; //存放最高冪數組的長度
//第一個多項式開始
int n=in.nextInt(); //讀入冪並臨時保存到n
int x=in.nextInt(); //讀入系數並臨時保存到x
a=new int[n+1]; //以最大冪確定數組的長度並實例化數組
a[n]=x;
do
{
n=in.nextInt(); //讀入冪
x=in.nextInt(); //讀入系數
a[n]=x;
}while(n!=0); //如果n為則第一個多項讀入結束,循環結束。
//第二個多項開始
n=in.nextInt();
x=in.nextInt();
b=new int[n+1];
do
{
n=in.nextInt();
x=in.nextInt();
b[n]=x;
}while(n!=0);
if(a.length>b.length) //計算最長數組長度
{
max=a.length;
}
else
{
max=b.length;
}
for(int j=max-1;j>=0;j--)
{
int sum=0;
if(j<a.length&&a[j]!=0)
{
sum=sum+a[j];
}
if(j<b.length&&b[j]!=0)
{
sum=sum+b[j];
}
if(sum==0) //如果系數為零則跳出本次循環
continue;
if(j>1) //冪大於1時的輸出格式
{
System.out.print(sum+"x"+j+"+");
}else if(j==0) //冪為時的輸出格式
{
System.out.print(sum);
} else if(j==1)//冪1為時的輸出格式
{
System.out.print(sum+"x"+"+");
}
}
}
}
