多项式的乘法和除法
多项式乘法
/*
多项式乘法:多项式P(m)系数保存在p数组中,多项式Q(n)系数保存在q数组中
结果最高次数为m+n,共m+n+1项
ai bj的乘积应累加到结果i+j项对应的系数中
*/
#include <stdio.h>int main(){double p[100];double q[100];double t[100*100];int m,n;scanf("%d%d",&m,&n);for(int i = 0;i<=m;i++)scanf("%lf",&p[i]);for(int i = 0;i<=n;i++)scanf("%lf",&q[i]);for(int i = 0;i<=m;i++){for(int j = 0;j<=n;j++){t[i+j] += p[i]*q[j];}}for(int i = 0;i<=(m+n);i++){printf("%lf ",t[i]);}return 0;
}
多项式除法
/*
多项式除法:多项式P(m)系数保存在p数组中,多项式Q(n)系数保存在q数组中
商保存在t数组中
余式保存在被除式的数组中
商的最高次数为m-n,因而一共有m-n+1项
*/
#include <stdio.h>int main(){double p[100];double q[100];double t[100*100];int m,n;scanf("%d%d",&m,&n);for(int i = 0;i<=m;i++)scanf("%lf",&p[i]);for(int i = 0;i<=n;i++)scanf("%lf",&q[i]);for(int i = m-n;i>=0;i--){t[i] = p[i+n]/q[n]; //被除式的每一项都要和整个除式相除,商的系数是t[i] for(int j = n;j>=0;j--){p[i+j] -= q[j]*t[i]; //每商一次,都要更新被除式的系数 } }//输出商 for(int i=0;i<=(m-n);i++)printf("%lf ",t[i]);printf("\n");//输出余式 int i = 0;for(int i = 0;i<=m;i++){printf("%lf ",p[i]); }return 0;
}
多项式的乘法和除法
多项式乘法
/*
多项式乘法:多项式P(m)系数保存在p数组中,多项式Q(n)系数保存在q数组中
结果最高次数为m+n,共m+n+1项
ai bj的乘积应累加到结果i+j项对应的系数中
*/
#include <stdio.h>int main(){double p[100];double q[100];double t[100*100];int m,n;scanf("%d%d",&m,&n);for(int i = 0;i<=m;i++)scanf("%lf",&p[i]);for(int i = 0;i<=n;i++)scanf("%lf",&q[i]);for(int i = 0;i<=m;i++){for(int j = 0;j<=n;j++){t[i+j] += p[i]*q[j];}}for(int i = 0;i<=(m+n);i++){printf("%lf ",t[i]);}return 0;
}
多项式除法
/*
多项式除法:多项式P(m)系数保存在p数组中,多项式Q(n)系数保存在q数组中
商保存在t数组中
余式保存在被除式的数组中
商的最高次数为m-n,因而一共有m-n+1项
*/
#include <stdio.h>int main(){double p[100];double q[100];double t[100*100];int m,n;scanf("%d%d",&m,&n);for(int i = 0;i<=m;i++)scanf("%lf",&p[i]);for(int i = 0;i<=n;i++)scanf("%lf",&q[i]);for(int i = m-n;i>=0;i--){t[i] = p[i+n]/q[n]; //被除式的每一项都要和整个除式相除,商的系数是t[i] for(int j = n;j>=0;j--){p[i+j] -= q[j]*t[i]; //每商一次,都要更新被除式的系数 } }//输出商 for(int i=0;i<=(m-n);i++)printf("%lf ",t[i]);printf("\n");//输出余式 int i = 0;for(int i = 0;i<=m;i++){printf("%lf ",p[i]); }return 0;
}