PTA刷題Advanced甲級——1009.Product of Polynomials——Day(5)

問題描述

在這裏插入圖片描述題目翻譯:
這是一個多項式給乘法,測試樣例包括兩行,每一行開頭都有一個數字來指示第一個多項式有幾項,然後依次輸入多項式每一項的指數和係數,第二行同理輸入第二個多項式的項數,以及每一項的指數和係數。

題目分析

在這裏我使用了兩個數組,第一個數組的下標爲指數,值爲係數,用來存儲第一個多項式。第二個數組用來存儲兩個多項式相乘的結果,仍然是下標存放指數而值存放係數。
在兩個多項式相乘的時候,應該做到指數想加,係數相乘
這道題有一個坑點,在測試0的時候一直不通過,其實是因爲我們不能將係數爲0 的項也輸出,所以應該將其過濾掉。

代碼

#include<stdio.h>
int main(){
 double a[1001]={0.0},b[2001]={0.0},t;  
    //開兩個數組,前一個存第一個多項式,下標爲次數,值爲係數,後一個要大一些防止越界,並且直接存儲結果。 
 int n1,n2,m,n,i,j;
 scanf("%d",&n1);
 for(i=0;i<n1;i++){
  scanf("%d %lf",&m,&t);
  a[m]=t;
 }
 scanf("%d",&n2);
 for(i=0;i<n2;i++){
  scanf("%d %lf",&m,&t);
  for(j=0;j<1001;j++){
   if(a[j]!=0.0){
    b[m+j]+=a[j]*t;           //這裏就是模擬多項式乘法的關鍵!! 
   }
  }
 }
 j=0;
 for(i=0;i<2001;i++){
  if(b[i]!=0.0)
   j++;
 }
 printf("%d",j);
 for(i=2000;i>=0;i--){
  if(b[i]!=0.0)
   printf(" %d %.1lf",i,b[i]);
 }
 return 0;
} 

答題用時10min
Q9——finish√

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章