[mathjax] 用数组实现一元多项式相加。
一元多项式一般形式如下:
$$f(x)=a_0+a_1x+…+a_{n-1}x^{n-1}+a_nx^n$$
两个一元多项式相加方法,相同指数的系数相加,不同指数的项复制到和多项式中,将结果用降幂输出。
用数组如何表示多项式:
1.多项式项数n: ?将数组个数定义时比n大就可以表示出n项
2.各项系数ai :? 数组内值表示项式系数
3.指数i? :? ? ? ? ? ? ? 数组的下标用来表示多项式系数
多项式代码相加实例代码:
以下是两个多项式:
$$f_1(x)=10x^{13}+8x^{10}+X^5+3x+2$$
$$f_2(x)=10x^{12}-7x^{10}+X^3+3x^2$$
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
// 梁笔记 // https://zouzhongliang.com #include <iostream> #include <ctime> using namespace std; void PolynomialAdd(int f[], int f1[], int f2[],int num) { for(int i=0;i<num;i++){ if (f1[i] && f2[i]) f[i] = f1[i] + f2[i]; else{ if (f1[i]) f[i] = f1[i]; else if(f2[i]) f[i] = f2[i]; } } } int main() { int f1[14]; int f2[14]; int f[14]; for(int i=0;i<14;i++){ f1[i] = 0; f2[i] = 0; f[i] = 0; } f1[13] = 10; f1[10] = 8; f1[5] = 1; f1[1] = 3; f1[0] = 2; f2[12] = 10; f2[10] = -7; f2[3] = 1; f2[2] = 3; PolynomialAdd( f, f1, f2, 14); for(int i=0;i<14;i++){ cout<<"指数:"<<i<<" "<<"系数:"<<f[i]<<endl; } return 0; } |
输出计算后多项式结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
指数:0 系数:2 指数:1 系数:3 指数:2 系数:3 指数:3 系数:1 指数:4 系数:0 指数:5 系数:1 指数:6 系数:0 指数:7 系数:0 指数:8 系数:0 指数:9 系数:0 指数:10 系数:1 指数:11 系数:0 指数:12 系数:10 指数:13 系数:10 |