(多项式运算4.7.6)POJ 2527 Polynomial Remains(多项式除法)
2013-10-26 10:24
399 查看
例[编辑]
计算把被除式、除式按某个字母作降幂排列,并把所缺的项用零补齐,写成以下这种形式:
然后商和余数可以这样计算:
将分子的第一项除以分母的最高次项(即次数最高的项,此处为x)。结果写在横线之上(x3 ÷ x = x2).
将分母乘以刚得到结果(最终商的第一项),乘积写在分子前两项之下(同类项对齐) (x2 · (x − 3) = x3 − 3x2).
从分子的相应项中减去刚得到的乘积(消去相等项,把不相等的项结合起来),结果写在下面。((x3 − 12x2) − (x3 − 3x2) = −12x2 + 3x2 = −9x2)然后,将分子的下一项“拿下来”。
把减得的差当作新的被除式,重复前三步(直到余式为零或余式的次数低于除式的次数时为止.被除式=除式×商式+余式 )
重复第四步。这次没什么可以“拿下来”了。
横线之上的多项式即为商,而剩下的 (−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; }
相关文章推荐
- POJ 2527 Polynomial Remains 多项式运算
- POJ2527 简化 · 多项式相除求余数
- POJ 2126 Factoring a Polynomial 多项式运算 水
- poj2527——Polynomial Remains(多项式相除)
- POJ 2527 : Polynomial Remains - 多项式除法
- poj 2527 Polynomial Remains 模拟多项式的除法
- POJ-2527 Polynomial Remains-多项式相除
- poj 1060 Modular multiplication of polynomials 二进制多项式取余式运算。
- poj 2126 Factoring a Polynomial 数学多项式分解
- POJ 2531 Network Saboteur 位运算子集枚举
- 创建一个类,重载运算符实现多项式的加,减,乘运算
- 用C++实现简单地多项式运算。(因为是菜鸟,会有一些漏洞)
- 数据结构 单链表的应用:多项式及其运算
- poj 1001 Exponentiation(高精度运算)
- poj2305 JAVA大数运算
- poj1753 广搜+位运算
- 5-2 一元多项式的乘法与加法运算
- POJ 2777 Count Color 线段树染色问题+位运算表示状态
- 用链表实现一元多项式的加法运算
- 一元多项式的乘法与加法运算(20 分)