L2 018 多項式A除以B (25 分)(細節)

2021-09-12 10:03:36 字數 1168 閱讀 8248

l2-018 多項式a除以b (25 分)

思路:測試點比較多,這種需要分步驟考慮,

(1)首先搞清楚什麼是多項式除法,就是b*d+c = a,在a/b中,d表示商,c表示餘數,所以從a的最高項開始比較,

每次消掉a中的最高項,逐步降低多項式a的最高項數,每次降低都是利用a-b*(x^k)*c,每個(x^k)和c都是d的一項,

這樣逐步求出商的多項式d,當多項式b的最高項數低於a時,就結束了,此時a就是c,也就是餘數多項式。

(2)多項式除法搞清了就要考慮特殊的情況

我們可以分情況考慮:

當a的最高項次數大於等於b的最高項次數:很好,直接寫就好了。

當a的最高項次數小於b的最高項次數:除不了,除數為0,餘數是a。

(3)主體的思路都有了,但還是要注意一些容易忘卻的地方

eg:每次輸出都是兩行;

對小數要精確到小數點後一位,使用".1lf"的格式輸出,就要保留0.05之前的所有資料,這裡浮點數的判斷不同於整數。

總結:這道題一開始只得了18分,是因為沒有考慮a的最高次數小於b的的情況,還有結尾小數判斷的情況,

如果在真實做題時要先有整體思路,然後依次考慮不同的方面,但是要注意時間分配。

ac**:

#include#include#include#include#includeusing namespace std;

const int maxn = 100100;

const double eps = 0.05;

double e1[maxn]=,e2[maxn]=,e3[maxn]=;

int main(void)

printf("\n");

} else

if(i<0) break;

ep1=ep;

} int f1=0,f2=0;

for(i=tp;i>=0;i--)

if(fabs(e3[i])>=eps) f1++;

for(i=tp;i>=0;i--)

if(fabs(e1[i])>=eps) f2++;

if(f1==0)else

printf("\n");

} if(f2==0)else

printf("\n");

} }return 0;

}

L2 018 多項式A除以B (25 分)

l2 018 多項式a除以b 25 分 這仍然是一道關於a b的題,只不過a和b都換成了多項式。你需要計算兩個多項式相除的商q和餘r,其中r的階數必須小於b的階數。輸入分兩行,每行給出乙個非零多項式,先給出a,再給出b。每行的格式如下 n e 1 c 1 e n c n 其中n是該多項式非零項的個數...

L2 018 多項式A除以B 25 分

這仍然是一道關於a b的題,只不過a和b都換成了多項式。你需要計算兩個多項式相除的商q和餘r,其中r的階數必須小於b的階數。輸入分兩行,每行給出乙個非零多項式,先給出a,再給出b。每行的格式如下 n e 1 c 1 e n c n 其中n是該多項式非零項的個數,e i 是第i個非零項的指數,c i ...

7 10 多項式A除以B(25 分)

7 10 多項式a除以b 25 分 這仍然是一道關於a b的題,只不過a和b都換成了多項式。你需要計算兩個多項式相除的商q和餘r,其中r的階數必須小於b的階數。輸入分兩行,每行給出乙個非零多項式,先給出a,再給出b。每行的格式如下 n e 1 c 1 e n c n 其中n是該多項式非零項的個數,e...