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 ...
随机推荐
- 使用DbVisualizer 8 连接Oracle数据库
1. 网上下载一个驱动包ojdbc14.jar,放到oracle目录下:...\DbVisualizer-8.0.1\jdbc\oracle\ojdbc14.jar 2. 打开 DbVisualize ...
- THREE.js代码备份——canvas - lines - colors(希尔伯特曲线3D、用HSL设置线颜色)
<!DOCTYPE html> <html lang="en"> <head> <title>three.js canvas - l ...
- Linux中profile与bashrc的作用
文章同步发表在博主网站朗度云,传输门:http://www.wolfbe.com/detail/201608/278.html 在Linux系统上,我们会看到类似于profile和bashrc的文件, ...
- ROS ZYNQ移植
1 准备工作 全部是按照官方操作的:http://wiki.ros.org/groovy/Installation/Source apt-get install python-rosdep py ...
- jexus 配置 学习
http://www.linuxdot.net/ 1.禁止或允许某IP或IP段访问网站 A.只允许某些IP地址访问网站(白名单功能) 默认情况下,允许所有IP地址访问.如果手工设置IP地址白名单, 那 ...
- HIVE中join、semi join、outer join举例详解
转自 http://www.cnblogs.com/xd502djj/archive/2013/01/18/2866662.html 举例子: hive> select * from zz0; ...
- python杂记-2(python之文件)
文件打开函数:f = open 表1-1:open函数中模式参数常用值 打开模式 描述 'r' 读模式 'w' 写模式 'a' 追加模式 'b' 二进制模式 '+' 读/写模式 表1-2:文件对象方法 ...
- Redis集群明细文档
Redis目前版本是没有提供集群功能的,如果要实现多台Redis同时提供服务只能通过客户端自身去实现(Memchached也是客户端实现分布式).目前根据文档已经看到Redis正在开发集群功能,其中一 ...
- jquery冒泡及阻止
javascript, jquery的事件中都存在事件冒泡和事件捕获的问题,下面将两种问题及其解决方案做详细总结. 事件冒泡是一个从子节点向祖先节点冒泡的过程: 事件捕获刚好相反,是从祖先节点到子节点 ...
- java解析xml禁止校验dtd
参考: http://shansun123.iteye.com/blog/1020425 http://blog.csdn.net/hailanzhijia/article/details/60049 ...