1. 程式人生 > >中國大學MOOC_零基礎學Java語言_第5周 陣列_1多項式加法

中國大學MOOC_零基礎學Java語言_第5周 陣列_1多項式加法

第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記憶體限制:32000kb
  1 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 }