f(x)=a0+a1x+a2x^2……+anx^n
正常逻辑如以下求法
# include<stdio.h>
int multinomial(int n,int coefficient[],int x)
{
int i;
printf("最高项:") ;
scanf("%d",&n);
printf("每项系数:") ;
for(i=0;i<=n;i++)
scanf("%d",&coefficient[i]);
int p=coefficient[n];
printf("请输入x:");
scanf("%d",&x);
for(i=0;i<=n;i++)
{
p+=coefficient[i]*pow(x,n);
}
return p;
}
int main()
{
int n,a[100],x,t;
t=multinomial(n,a,x);
printf("多项式的值为:")
printf("%d",t);
return 0;
}
将原试看成f(x)=a0+……+x(an-2+x(an-1+an*x)),这种算法会快很多
# include<stdio.h>
int multinomial(int n,int coefficient[],int x)
{
int i;
printf("最高项:") ;
scanf("%d",&n);
printf("每项系数:") ;
for(i=0;i<=n;i++)
scanf("%d",&coefficient[i]);
int p=coefficient[n];
printf("请输入x:");
scanf("%d",&x);
for(i=n;i>0;i--)
{
p=coefficient[i-1]+p*x;
}
return p;
}
int main()
{
int n,a[100],x,t;
t=multinomial(n,a,x);
printf("多项式的值为:")
printf("%d",t);
return 0;
}