令q(x)=bmX^m+bm-1X^(m-1)+...b1X+b0,展开 q(x) * (x-k) = X^(m+1)+[-Kbm+b(m-1)]X^m+...(K+b0)x+K。
相同次数的项的系数相等,所以推出 b(m-1)=k*bm+a[n-1], r=k*b0+a[0]。
代码如下:
1 #include<iostream> 2 #include<cstdio> 3 4 using namespace std; 5 6 int main() 7 { 8 int n, p[10010], q[10010], i, k; 9 while (cin >> k) 10 { 11 i=0; 12 char ch; 13 scanf("%d%c", &p[i++], &ch); 14 while(ch != '\n') 15 { 16 scanf("%d%c", &p[i++], &ch); 17 } 18 cout << "q(x): "; 19 n=i; 20 q[0]=p[0]; 21 cout << q[0]; 22 for (i=1; i<n-1; i++) 23 { 24 q[i]=k*q[i-1] + p[i]; 25 cout << " " << q[i]; 26 } 27 cout << endl << "r = " << q[n-2]*k+p[n-1] << endl << endl; 28 } 29 return 0; 30 }