多項式加法(模擬)


題目內容:一個多項式可以表達為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
解題思路:字符串處理,基礎題,詳解看注解。

AC代碼:

 1 import java.util.Scanner;
 2 public class Main {
 3     public static void main(String[] args) {
 4         Scanner scan = new Scanner(System.in);
 5         int[] Pow = new int[101];//Pow數組記錄系數,下標是冪指數
 6         int index,val,MaxIndex=-1;//先標記為-1,表示找不到
 7         for(int i=1;i<=2;++i) {//遍歷兩次,輸入兩個多項式
 8             while(true) {
 9                 index=scan.nextInt();
10                 val = scan.nextInt();
11                 Pow[index] += val;
12                 if(index==0)break;//當輸入冪指數是0,表示完成一個多項式的輸入,跳出
13             }
14         }
15         for(int i=100;i>=0;--i){//找到第一個非0系數的冪指數
16             if(Pow[i]!=0){
17                 MaxIndex=i;//將第一個非0系數的冪指數給MaxIndex后跳出
18                 break;
19             }
20         }
21         if(MaxIndex==-1){//表示整個多項式為0,直接輸出0即可
22             System.out.println(0);
23         }
24         else if(MaxIndex==0){//如果0次冪系數不為0,說明非0次冪的系數都為0,直接輸出0次冪的系數
25             System.out.println(Pow[MaxIndex]);
26         }
27         else{//先輸出第一個非0次冪系數的項
28             if(Pow[MaxIndex]>1||Pow[MaxIndex]<-1)System.out.print(Pow[MaxIndex]+"x");//如果系數不是1或-1且不是0,直接輸出第一項的系數和x
29             else if(Pow[MaxIndex]==1)System.out.print("x");//如果系數是1,輸出x
30             else if(Pow[MaxIndex]==-1)System.out.print("-x");//如果系數是-1,輸出-x
31             if(MaxIndex!=1)System.out.print(MaxIndex);//如果此時的冪指數不是1,接着就可以輸出冪指數
32             for(int i=MaxIndex-1;i>0;--i){//處理除首尾外中間的部分,因為已經有第一項了,所以接下來遇到系數是正數,前面可以直接輸出'+'
33                 if(Pow[i]>1)System.out.print("+"+Pow[i]+"x");//當系數大於1時
34                 else if(Pow[i]==1)System.out.print("+x");//當系數是1時,直接輸出+x
35                 else if(Pow[i]==-1)System.out.print("-x");//當系數是-1時,直接輸出-x
36                 else if(Pow[i]<-1)System.out.print(Pow[i]+"x");//當系數小於-1時
37                 else continue;//這句話其實是多余的,為了呼應美hhh~,即系數為0時,直接跳過
38                 if(Pow[i]!=0 && i>1)System.out.print(i);    //如果系數不為0且冪指數不為1,才可以輸出這個冪指數    
39             }//最后處理尾巴即0次冪,這時候就不用管系數是不是1或-1,因為最后一項是不含x的,所以只需按照剩下的規則格式輸出即可
40             if(Pow[0]>0)System.out.print("+"+Pow[0]);
41             if(Pow[0]<0)System.out.print(Pow[0]);
42         }
43         scan.close();
44     }
45 }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM