D Polynomial division AtCoder Beginner Contest 245

编程入门 行业动态 更新时间:2024-10-20 08:26:39

AtCoder Beginner Contest 245

D. Polynomial division

这题是一个模拟题,模拟多项式除法的运算过程。

手动运算多项式除法的步骤如下:

把被除式、除式按某个字母作降幂排列,并把所缺的项用零补齐.用被除式的第一项除以除式第一项,得到商式的第一项.用商式的第一项去乘除式,把积写在被除式下面(同类项对齐),消去相等项,把不相等的项结合起来.把减得的差当作新的被除式,再按照上面的方法继续演算,直到余式为零或余式的次数低于除式的次数时为止,被除式=除式×商式+余式。若余式为零,说明这个多项式能被另一个多项式整除

这一题不用考虑余数问题,因为A*B=C, 必定C能整除A。

代码

#include <iostream>
#include <algorithm>
#include <set>
#define int long long
using namespace std;const int N = 2e5 + 10;
// 多项式除法
// 大除法模拟
int a[500],c[500],b[500];
signed main()
{int n, m;cin >> n >> m;for (int i = 0; i <= n; i++)cin >> a[i];for (int i = 0; i <= n + m; i++)cin >> c[i];//把被除式、除式按某个字母作降幂排列,并把所缺的项用零补齐.for(int i = m; i >= 0; i --){// 用被除式的第一项除以除式第一项,得到商式的第一项.b[i] = c[i + n] / a[n];for(int j = 0; j <= n; j ++){//用商式的第一项去乘除式,把积写在被除式下面(同类项对齐),然后相减得到新的被除式c[i + j] -= b[i] * a[j];//把减得的差当作新的被除式,再按照上面的方法继续演算}}for(int i = 0; i <= m; i ++)cout << b[i] << " ";puts("");
}

更多推荐

AtCoder,division,Polynomial,Contest,Beginner

本文发布于:2023-05-28 06:55:51,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/315115.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:AtCoder   division   Polynomial   Contest   Beginner

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!