中國大學MOOC_零基礎學Java語言_第5周 陣列_1多項式加法
阿新 • • 發佈:2018-12-04
第5周程式設計題
第5周程式設計題
依照學術誠信條款,我保證此作業是本人獨立完成的。
溫馨提示:
1.本次作業屬於Online Judge題目,提交後由系統即時判分。
2.學生可以在作業截止時間之前不限次數提交答案,系統將取其中的最高分作為最終成績。
1 多項式加法(5分)題目內容:
一個多項式可以表達為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記憶體限制:32000kb1 import java.util.Scanner; 2 3 public class Main { 4 5 public static void main(String[] args) { 6 // TODO Auto-generated method stub 7 Scanner in = new Scanner(System.in); 8 int[] a=new int[101];//存放第一個多項式 9 int[] b=new int[101];//存放第二個多項式 10 int[] c=new int[101];//存放合併後的多項式 11 int count=0;//用來統計輸出的項數 12 int n=0;//n表示冪次 13 int x=0;//x表示係數 14 // 得到第一個多項式 15 do 16 { 17 n=in.nextInt(); 18 x=in.nextInt(); 19 a[n]=x; 20 }while(n!=0); 21 // 得到第二個多項式 22 do 23 { 24 n=in.nextInt(); 25 x=in.nextInt(); 26 b[n]=x; 27 }while(n!=0); 28 // 合併多項式 29 for(int i=0;i<101;i++) 30 { 31 c[i]=a[i]+b[i]; 32 } 33 // 輸出冪次為2到100的項 34 for(int i=100;i>1;i--) 35 { 36 if(c[i]!=0)//如果係數不為零 37 { 38 if(count>0)//如果不是輸出的第一項 39 { 40 if(c[i]>0)//係數大於零要輸出+號 41 { 42 System.out.print("+"); 43 } 44 } 45 if(c[i]!=1&&c[i]!=-1)//如果係數為+-1的話,不能把1輸出來,所以要單獨處理 46 { 47 System.out.print(c[i]+"x"+i); 48 }else if(c[i]==1)//係數為1時 49 { 50 System.out.print("x"+i); 51 }else//係數為-1時 52 { 53 System.out.print("-x"+i); 54 } 55 count++; 56 } 57 else//係數為零不輸出 58 { 59 continue; 60 } 61 } 62 // 開始處理冪次為1的項 63 if(c[1]!=0) 64 { 65 if(count>0)//非首項 66 { 67 if(c[1]>0)//正項要輸出+號 68 { 69 System.out.print("+"); 70 } 71 } 72 if(c[1]!=1&&c[1]!=-1)//係數為+-1同樣要單獨處理 73 { 74 System.out.print(c[1]+"x"); 75 } 76 else if(c[1]==1)//係數為1 77 { 78 System.out.print("x"); 79 } 80 else//xi數為-1時 81 { 82 System.out.print("-x"); 83 } 84 count++; 85 } 86 // 開始處理冪次為0的項 87 if(c[0]!=0) 88 { 89 if(count>0)//非首項 90 { 91 if(c[1]>0)//正項要輸出+號 92 { 93 System.out.print("+"); 94 } 95 } 96 System.out.print(c[0]); 97 count++; 98 } 99 // 如果之前一個項都沒有輸出 100 if(count==0) 101 { 102 System.out.print("0"); 103 } 104 } 105 }