例如:多项式联乘
(A0 + A1X + A2X^2) * (B0 + B1X + B2X^2) * (C0 + C1X + C2X^2) = (C0 + C1X +C2X^2 + C3X^3 + C4X^4 + C5X^5 + C6X^6)如何求解其中的
C0,C1,C2,C3,C4,C5,C6  ?谢谢!

解决方案 »

  1.   

    int a[]={3,1,2};
    int b[]={1,3,1};
    int d[]={4,1,3};
    int e[]={0,0,0,0,0,0,0};
    int c[7]={0,0,0,0,0};
    int i,j,k;
    for(i=0;i<3;i++)
    for(j=0;j<3;j++)
    c[i+j]=c[i+j]+a[i]*b[j];
    k=i+j-2;
    for(i=0;i<3;i++)
    for(j=0;j<=k;j++)
    e[i+j]=e[i+j] + c[j]*d[i];

    for(i=0;i<=6;i++)
    printf("%d\t",e[i]);
    有点土,但能解决;-)
      

  2.   

    定义一个结构体的链表
    struct 
    {int 幂
     int 系数}   相乘的时候幂数相加,系数相乘
    常数项的系数为0, 或者直接定义一个类,重载运算符
    记得数据结构是这么讲的
      

  3.   

    很简单,
    搜一下历年的高级程序员考试试题,忘了是哪一年的了,
    反正是考过,基本思路就是用链表表示多项式,
    先把两个多项式的最高次数加起来,设为C,那么乘积的最高次数也为C
    然后
    for(index=0;index<=C;index++)
    {
     for(X=0;X<=A的最高次数;x++)
     For(Y=0;y<=B的最高次数;Y++)
       if(多项式A中X项的次数+多项式B中Y项的次数==index)
      //以A中的该项的系数*B中的该项的系数为系数,index为次数,构成结果链表的第index项}