1. 程式人生 > >運用java的陣列實現 多項式加法 java陣列 程式設計習題

運用java的陣列實現 多項式加法 java陣列 程式設計習題

//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 Main {


	public static void main(String[] args) {
        Scanner in = new  Scanner(System.in);
        int a ;//冪
        int b ;//係數
        int max = 0;//用來獲取最高冪
        boolean isFirst = true;//判斷是否是首次輸出
        int[] num1= new int[100];//定義陣列
        int[] num2= new int[100];//定義陣列
      //讀取第一個陣列
        do {
            a = in.nextInt();
            b = in.nextInt();
            num1[a] = b;
            if(max<=a) {
            	max=a;
    		}
        } while(a!=0);
      //讀取第二個陣列
        do {
            a = in.nextInt();
            b = in.nextInt();
            num2[a] = b;
            if(max<=a) {
            	max=a;
    		}
        } while(a!=0);

        int sum ;//等冪係數求和
        
		for(  int i=max;i>=0;i--){
			sum =num1[i]+num2[i];
   		if(max==0) {
   			System.out.print(sum);
   			break;//如果max=0  直接跳出,程式不往下走
   		}
   		if(sum!=0) {
   			if(!isFirst) {
   				if(sum>=0) {
   					System.out.print("+");//不是首次輸入且係數大於0時輸出需要增加“+”
   				}
   			}
   			if(sum!=1||i ==0) {
   				System.out.print(sum);//冪為0,係數不為1 時輸出係數
   			}
   			if(i!=0) {
   				System.out.print("x");//冪不等於0時 輸出X
   			}
   			if(i!=0&&i!=1) {
   				System.out.print(i);//冪不等於0且不等於1時,輸入冪
   			}
   			isFirst = false;
   		}
   		if(isFirst && i ==0&&sum==0){
   			System.out.print(sum);//首次輸出係數不需要在前面“+”
   		}
       }
		}
	}