(多项式运算4.7.6)POJ 2527 Polynomial Remains(多项式除法)
把被除式、除式按某个字母作降幂排列,并把所缺的项用零补齐,写成以下这种形式:
然后商和余数可以这样计算:
横线之上的多项式即为商,而剩下的 (?123) 就是余数。
算数的长除法可以看做以上算法的一个特殊情形,即所有 x 被替换为10的情形。
/* * POJ_2527.cpp * * Created on: 2013年10月26日 * Author: Administrator */#include <iostream>#include <cstdio>using namespace std;const int maxn = 10010;int main(){int n,k;int val[maxn];while(scanf("%d%d",&n,&k)!=EOF,n!=-1 || k !=-1){int i;for(i = 0 ; i <= n ; ++i){scanf("%d",&val[i]);}//进行除法运算for(i = n ; i >= k ; --i){if(val[i] == 0){continue;}val[i-k] = val[i-k] - val[i];val[i] = 0;}//调整数组长度,即高位的0不用输出int t = n;while(val[t] == 0 && t > 0){--t;}for(i = 0 ; i < t ; ++i){printf("%d ",val[i]);}printf("%d\n",val[t]);}return 0;}