POJ 1060 Modular multiplication of polynomials(多项式的加减乘除,除法转化成减法来求)
题意:给出f(x),g(x),h(x)的 (最高次幂+1)的值,以及它们的各项系数,求f(x)*g(x)/h(x)的余数。
这里多项式的系数只有1或0,因为题目要求:这里多项式的加减法是将系数相加/减后再模2,这样其实也就可以用异或运算来代替加减法。
思路:看代码吧,水题一个,主要在于把除法转化成减法,一次一次减就行。
#include <iostream>
#include <stdio.h>
#include <string.h> using namespace std;
const int maxn=;
//f,g,h存储的是多项式的系数,sum存储的是f*g的系数以及最后余数的系数
int f[maxn],g[maxn],h[maxn],sum[maxn];
int lf,lg,lh,ls;//分别为f,g,h,sum的最高次幂 //比较sum表示的多项式与h表示的多项式的大小
int compare() {
if(ls<lh)
return -;
if(ls>lh)
return ;
for(int i=ls-; i>=; i--) {
if(sum[i]==h[i])
continue;
if(sum[i]>h[i])
return ;
if(sum[i]<h[i])
return -;
}
return ;
}
int main() {
int t,d;
scanf("%d",&t);
while(t--) {
memset(h,,sizeof(h));
memset(sum,,sizeof(sum));
//将f多项式的信息存入f数组
scanf("%d",&d);
lf=d-;
for(int j=lf; j>=; j--) {
scanf("%d",&f[j]);
}
//将g多项式的信息存入g数组
scanf("%d",&d);
lg=d-;
for(int j=lg; j>=; j--) {
scanf("%d",&g[j]);
}
//将h多项式的信息存入h数组
scanf("%d",&d);
lh=d-;
for(int j=lh; j>=; j--) {
scanf("%d",&h[j]);
}
//计算f*g的多项式
ls=lf+lg;
for(int i=lf; i>=; i--) {
for(int j=lg; j>=; j--) {
sum[i+j]=sum[i+j]^(f[i]&g[j]);
}
}
/*
关键是怎么求余数,这里是先判断sum多项式是否大于h多项式,
若大于,则sum减一次h,减去后的信息存入sum中。
再继续判断,直到sum小于h,则此时的sum为余数。
总之,就是把除法改成较简单的减法操作。
*/
while(compare()>=) {
d=ls-lh;
for(int i=ls; i-d>=; i--) {
sum[i]=sum[i]^h[i-d];
}
while(ls && !sum[ls])
ls--;
/*
原先一直WA的代码,在每次更新sum的最高次幂ls时出了错误。
int mark=0;
for(int i=ls; i-d>=0; i--) {
sum[i]=sum[i]^h[i-d]; 下面错误错在这里只判断了i>=d的情况,
有可能当i>=d的时候sum[i]=0,这样求出mark(也就是结果的最高次幂)为0;
但是可能有i<d的时候,有sum[i]=1,那么mark就不为0。 if(sum[i] && !mark) {
mark=i;
} }
ls=mark;
*/ } printf("%d",ls+);
for(int i=ls; i>=; i--) {
printf(" %d",sum[i]);
}
printf("\n");
}
return ;
}
POJ 1060 Modular multiplication of polynomials(多项式的加减乘除,除法转化成减法来求)的更多相关文章
- POJ 1060:Modular multiplication of polynomials
Modular multiplication of polynomials Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4 ...
- POJ1060 Modular multiplication of polynomials
题目来源:http://poj.org/problem?id=1060 题目大意: 考虑系数为0和1的多项式.两个多项式的加法可以通过把相应次数项的系数相加而实现.但此处我们用模2加法来计算系数之和. ...
- POJ1060 Modular multiplication of polynomials解题报告 (2011-12-09 20:27:53)
Modular multiplication of polynomials Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 3 ...
- UVALive 2323 Modular Multiplication of Polynomials(模拟)
这是一个相对简单的模拟,因为运算规则已经告诉了我们,并且比较简单,不要被吓到…… 思路:多项式除以另外一个多项式,如果能除,那么他的最高次一定被降低了,如果最高次不能被降低,那说明已经无法被除,就是题 ...
- Lintcode: Hash Function && Summary: Modular Multiplication, Addition, Power && Summary: 长整形long
In data structure Hash, hash function is used to convert a string(or any other type) into an integer ...
- B - Housewife Wind POJ - 2763 树剖+边权转化成点权
B - Housewife Wind POJ - 2763 因为树剖+线段树只能解决点权问题,所以这种题目给了边权的一般要转化成点权. 知道这个以后这个题目就很简单了. 怎么转化呢,就把这个边权转化为 ...
- S - Making the Grade POJ - 3666 结论 将严格递减转化成非严格的
S - Making the Grade POJ - 3666 这个题目要求把一个给定的序列变成递增或者递减序列的最小代价. 这个是一个dp,对于这个dp的定义我觉得不是很好想,如果第一次碰到的话. ...
- poj 1060
http://poj.org/problem?id=1060 题意:多项式的运算的题目,不过这个运算有个特点,就是只要是同项的多项式,无论相加还是相减,都为0,给你三个多项式,分别为a,b,c. 要你 ...
- poj 2126 Factoring a Polynomial 数学多项式分解
题意: 给一个多项式,求它在实数域内的可分解性. 分析: 代数基本定理. 代码: //poj 2126 //sep9 #include <iostream> using namespace ...
随机推荐
- mysql颠覆实战笔记(四)--商品系统设计(一):商品主表设计
版权声明:笔记整理者亡命小卒热爱自由,崇尚分享.但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的<web级mysql颠覆实战课程 >.如需转载请尊重老师劳动,保留沈逸 ...
- 解决Win7下运行php Composer出现SSL报错的问题
以前都在linux环境使用php composer.今天尝试在win7下运行composer却出现SSL报错: D:\data\www\mmoyu\symapp>php -f %phprc%\c ...
- 图片放大缩小(和ViewPager配合使用流畅显示)--第三方开源--PhotoView
图片的放大缩小实现效果是使用的github上的一个开源项目photoView实现的,下载地址:https://github.com/chrisbanes/PhotoView 下面看测试代码: acti ...
- 用Python作GIS之二:STARS开发环境配置
STARS的一般使用可以通过REGAL网页快速学习http://regionalanalysislab.org/?n=STARS再次不做详细介绍这里关注的主题是对STARS源代码分析即为使用Pytho ...
- Resource temporarily unavailable
数据库版本:5.5.14 操作系统版本:contos 6.3 服务器256G内存,安装90个实例.通过脚本启动90个mysql数据库实例,会有几个实例无法启动,进程启动后直接被杀死.查看mysql日志 ...
- mapreduce 实现pagerank
输入格式: A 1 B,C,D B 1 C,Dmap: B A 1/3 C A 1/3 D A 1/3 A |B,C,D C B 1/2 D B 1/2 B |C,Dreduce: B (1-0.85 ...
- 从零开始学ios开发(十三):Table Views(下)Grouped and Indexed Sections
在前面2篇关于Table View的介绍中,我们使用的Style都是Plain,没有分组,没有index,这次学习的Table View和iphone中的通讯录很像,有一个个以字符为分割的组,最右边有 ...
- Java的别名机制
基本类型存储了实际的数值,而并非指向一个对象的引用,所以在为其赋值的时候,是直接将一个地方的内容复制到另一个地方. 但是在为对象"赋值"的时候,情况却发生了变化.对一个对象进行操作 ...
- Windows程序消息机制浅析
1.消息 消息是由MSG结构体来表示的.如下: typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lPar ...
- jquery-2.0.3.js和jquery-2.0.3.min.js的区别
两个文件的作用是完全一样的. jquery-2.0.3.js里的代码是没有进行处理的原代码,适合于人们阅读与研究. jquery-2.0.3.min.js里的代码进行过特殊的处理, 如变量的名称基本都 ...