問題描述
題目翻譯:
這是一個多項式給乘法,測試樣例包括兩行,每一行開頭都有一個數字來指示第一個多項式有幾項,然後依次輸入多項式每一項的指數和係數,第二行同理輸入第二個多項式的項數,以及每一項的指數和係數。
題目分析
在這裏我使用了兩個數組,第一個數組的下標爲指數,值爲係數,用來存儲第一個多項式。第二個數組用來存儲兩個多項式相乘的結果,仍然是下標存放指數而值存放係數。
在兩個多項式相乘的時候,應該做到指數想加,係數相乘。
這道題有一個坑點,在測試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√