1多項式加法(5分)

題目內(nèi)容:
一個多項式可以表達為x的各次冪與系數(shù)乘積的和,比如:
2x6+3x5+12x3+6x+20
現(xiàn)在,你的程序要讀入兩個多項式,然后輸出這兩個多項式的和,也就是把對應(yīng)的冪上的系數(shù)相加然后輸出。
程序要處理的冪最大為100。

輸入格式:
總共要輸入兩個多項式,每個多項式的輸入格式如下:
每行輸入兩個數(shù)字,第一個表示冪次,第二個表示該冪次的系數(shù),所有的系數(shù)都是整數(shù)。第一行一定是最高冪,最后一行一定是0次冪。
注意第一行和最后一行之間不一定按照冪次降低順序排列;如果某個冪次的系數(shù)為0,就不出現(xiàn)在輸入數(shù)據(jù)中了;0次冪的系數(shù)為0時還是會出現(xiàn)在輸入數(shù)據(jù)中。

輸出格式:
從最高冪開始依次降到0冪,如:
2x6+3x5+12x3-6x+20
注意其中的x是小寫字母x,而且所有的符號之間都沒有空格,如果某個冪的系數(shù)為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內(nèi)存限制:32000kb

package pro;

import java.util.Scanner;

public class main3 {
    public static void main(String[] args) {
        int[]a=new int[101];
        int[]b=new int [101];
        Scanner scan=new Scanner(System.in);
        int next;//保存輸入值
        boolean flag1=false;//前面都有數(shù)
        boolean flag2=false;//前面都有數(shù)
        
        while((next=scan.nextInt())!=0) {
            a[next]+=scan.nextInt();
        }
        a[0]+=scan.nextInt();
        
        while((next=scan.nextInt())!=0) {
            b[next]+=scan.nextInt();
        }
        b[0]+=scan.nextInt();
        //輸出最高冪次項(大于2)+x6和x6
        //要考慮:1.系數(shù)是負數(shù)2.系數(shù)是正負一時,不輸出一
        int i=100;
        for(;i>=2;--i) {
            if(a[i]+b[i]!=0) {
                System.out.print((a[i]+b[i]>0?"":"-")+(Math.abs(a[i]+b[i])==1?"":Math.abs(a[i]+b[i]))+"x"+i);
                flag1=true;
                flag2=true;
                break;
            }
        }
        --i;
        //系數(shù)不為零時和x平方及以上,要考慮:1.正負2.正負一  x6+1x2和x6+x2
        for(;i>=2;--i) {
            if(a[i]+b[i]!=0) {
                System.out.print((a[i]+b[i]>0?"+":"-")+(Math.abs(a[i]+b[i])==1?"":Math.abs(a[i]+b[i]))+"x"+i);
            }
                
        }
       //若有最高次項(大于1次), 則一次方的項的輸出,x2+1x和x2+x
       if(flag1) {
           if(a[1]+b[1]!=0) {
                System.out.print((a[1]+b[1]>0?"+":"-")+(Math.abs(a[1]+b[1])==1?"":Math.abs(a[1]+b[1]))+"x");
                flag2=true;
             }
       }
       //若沒有最高次項,一次方項的輸出,+x和x
       else {
           if(a[1]+b[1]!=0) {
                System.out.print((a[1]+b[1]>0?"":"-")+(Math.abs(a[1]+b[1])==1?"":Math.abs(a[1]+b[1]))+"x");
                flag1=true;
                flag2=true;
           }
       }
       //若最高次項為一次x+8,和8的區(qū)別
        if(flag1) {
             if(a[0]+b[0]!=0) {
                System.out.print((a[0]+b[0]>0?"+":"-")+Math.abs(a[0]+b[0]));
                flag2=true;
               }     
        }else {
            if(a[0]+b[0]!=0) {
                System.out.print((a[0]+b[0]>0?"":"-")+Math.abs(a[0]+b[0]));
                flag2=true;
              }     
        }
        //兩個多項式都為0
        if(!flag2) {
            System.out.print(0);
        }
            
        scan.close();      
    }
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容