POJ2527 简化 · 多项式相除求余数
2016-11-14 16:22
204 查看
1 题意
2 分析
注意如果得到的余数和除数幂次相同也要继续除,知道余数的幂小于除数或者余数为0(整除)!
注意题目输入和输出都是从低次幂开始的!
代码一针对此题,代码二按部就班。
3
代码一
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <algorithm>
using namespace std;
const int maxn=1e4+10;
int a[maxn],h[maxn];// 多项式a/多项式b
int main()
{
//freopen("out.txt","w",stdout);
int n,k;
while(~scanf("%d%d",&n,&k)){
if(n==-1&&k==-1) break;
for(int i=0;i<=n;i++)
a[i]=0;
for(int i=0;i<=n;i++){
scanf("%d",&a[i]);
}
for(int i=n;i>=k;i--){
if(a[i]!=0){
a[i-k]-=(a[i]);
a[i]=0;
}
}
while(a
==0&&n>=0){
n--;
}
for(int i=0;i<n;i++){
cout<<a[i]<<" ";
}
cout<<a
<<endl;
}
return 0;
}
代码二
2 分析
注意如果得到的余数和除数幂次相同也要继续除,知道余数的幂小于除数或者余数为0(整除)!
注意题目输入和输出都是从低次幂开始的!
代码一针对此题,代码二按部就班。
3
代码一
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <algorithm>
using namespace std;
const int maxn=1e4+10;
int a[maxn],h[maxn];// 多项式a/多项式b
int main()
{
//freopen("out.txt","w",stdout);
int n,k;
while(~scanf("%d%d",&n,&k)){
if(n==-1&&k==-1) break;
for(int i=0;i<=n;i++)
a[i]=0;
for(int i=0;i<=n;i++){
scanf("%d",&a[i]);
}
for(int i=n;i>=k;i--){
if(a[i]!=0){
a[i-k]-=(a[i]);
a[i]=0;
}
}
while(a
==0&&n>=0){
n--;
}
for(int i=0;i<n;i++){
cout<<a[i]<<" ";
}
cout<<a
<<endl;
}
return 0;
}
代码二
//假设多项式每次相除得到的商总是整数,对于此题肯定符合 #include <iostream> #include <string.h> #include <stdio.h> #include <algorithm> using namespace std; const int maxn=1e4+10; int a[maxn],h[maxn];// 多项式a/多项式b int Compare(int la,int lh){ if(la>=lh) return 1; else if(la<lh) return 0; } int main() { //freopen("out.txt","w",stdout); int n,k; while(~scanf("%d%d",&n,&k)){ if(n==-1&&k==-1) break; int la=-1,lh=k; for(int i=0;i<=n;i++) a[i]=h[i]=0; h[k]=1;h[0]=1;//题目条件 for(int i=0;i<=n;i++){ scanf("%d",&a[i]); } for(int i=n;i>=0;i--){ if(la==-1&&a[i]!=0){ la=i; break; } } while(Compare(la,lh)>0){///余数和除数最高次幂相同时要继续除,直到余数幂小于除数或者余数为0 int d=la-lh;//商的幂 int s=a[la]/h[lh];//商的系数 for(int i=0;i<=lh;i++){ a[i+d]-=(s*h[i]); } for(int i=la;i>0;i--){//la最低到1 if(a[i]==0) la--; else break; } if(la==0&&a[0]==0){ break; } } for(int i=0;i<la;i++){ cout<<a[i]<<" "; } cout<<a[la]<<endl; } return 0; }
相关文章推荐
- poj2527——Polynomial Remains(多项式相除)
- POJ-2527 Polynomial Remains-多项式相除
- (多项式运算4.7.6)POJ 2527 Polynomial Remains(多项式除法)
- poj 2527 Polynomial Remains 模拟多项式的除法
- POJ 2527 Polynomial Remains 多项式运算
- POJ 1006 中国余数定理
- poj 2348 博弈 -- 辗转相除为背景
- POJ 2126 Factoring a Polynomial 多项式运算 水
- C++、MATLAB 两个数值相除,取结果的余数、整除数部分 MATLAB两整数相除结果为整型、浮点型
- Java实现数组形式的多项式加法、减法、乘法、相除运算
- poj 1996多项式计算
- POJ 1060 Modular multiplication of polynomials(多项式的加减乘除,除法转化成减法来求)
- poj 1465 Multiple 静态节点+余数判重+非STL队列的广搜
- 输入两个整数,求他们相除的余数。用带参的宏来实现,编程序。
- 如何在JS里取得两个数相除的整数和余数,那么如何判断一个数是整数呢?
- 在Python中获取两数相除的商和余数方法
- POJ NOI MATH-7647 余数相同问题
- POJ——多项式加法(AC)
- uva 10719 Quotient Polynomial(多项式相除)
- POJ 1995 多项式求和取模