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...