不是VIP会员,不能显示答案

题目解答

题目:
多项式乘法
二个只含有一个未知数x的多项式相乘,得到的结果也是含有未知数x的多项式。比如
1+2x2+4x4)*(6+x-2x3)=6+x+12x2+24x4-8x7。计算过程中,可以让第1个多项式的每一项去乘上第2个多项式,将得到的每个乘积结果相加。比如上述二式相乘的例子中:
1乘上第2式得: 6+x-2x3,
2x2乘上第2式得: 12x2+2x3-4x5,
4x4乘上第2式得: 24x4+4x5-8x7,
三个乘积相加得最终结果:6+x+12x2+24x4-8x7。
样例输出:
6.000 0
1.000 1
12.000 2
24.000 4
-8.000 7

样例输入:
3 3
1 0
2 2
4 4
6 0
1 1
-2 3
以下程序中将第一个多项式的系数和指数分别存储在a1和b1数组中,将第二个多项式的系数和指数分别存储在a2和b2数组中,结果存放在数组a和b中。其中变量n1和n2分别表示二个多项式的项数。
假设二个相乘的多项式均不超过1000项,且x的次数 最高项均不超过1000。请将该程序补充完整。
 Program cz2010_5; 
const  maxn=1000;      eps=1e-10; 
var a1,a2:array[1..maxn]of extended; 
    b1,b2:array[1..maxn]of longint; 
    a:array[   0..max  ]of extended; 
    b:array[   0..max  ]of longint; 
    n1,n2,n,i,j,k:longint;    s:extended; 
begin 4 
 
   readln(n1,n2); 
   for i:=1 to n1 do readln(a1[i],b1[i]);// 输入第1个多项式
系数和指数 
   for i:=1 to n2 do readln(a2[i],b2[i]); // 输入第2个多项式
系数和指数 
   fillchar(a,sizeof(a),0); 
   for i:=1 to n1 do 
      for j:=1 to n2 do begin 
         k:=    n*2       ; 
         a[k]:=  b1[i]+b2[j]   ; 
      end; 
   n:=-1;   i:=0; 
   while i<=b1[n1]+b2[n2] do begin 
      if abs(a[i])>=eps then begin 
         n:=n+1;   a[k]+a1[i]*a2[j]      ;  b[n]:=  a[n]:=a[i]         ; 
      end; 
      i:=i+1; 
   end; 
   for i:=0 to n do writeln(a[i]:0:3,' ',b[i]); 
end.
考点:
分析:
解答:
评论:
老师: