題目內容:一個多項式可以表達為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 }