POJ1060 Modular multiplication of polynomials
2016-07-29 13:57
351 查看
不想多说 全在代码里
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int g[1001],f[1001],s[2001],h[1001];
int lg,ls,lh,lf;
int i,j;
void mul() //乘
{
for( i=0; i<lg; i++)
for( j=0; j<lf; j++)
s[i+j] ^= g[i]*f[j];
ls=lg+lf-1;
return ;
}
void mod()
{
int t;
int res[2001];
while(ls>=lh)
{
memset(res,0,sizeof(res));
t=ls-lh;;
for( i=0; i<lh; i++)
{
if(h[i]==1)
res[i+t]=1;
}
for( i=ls-1; i>=t; i--)
s[i]^=res[i];
for( i=ls-1; i>=0; i--)
{
if(s[i])
{
ls=i+1;
break;
}
ls=0;
}
}
return ;
}
int main()
{
//freopen("in.txt","r",stdin);
int n;
scanf("%d",&n);
while(n--)
{
memset(s, 0, sizeof(s));
memset(f, 0, sizeof(f));
memset(g, 0, sizeof(g));
memset(h, 0, sizeof(h));
scanf("%d",&lg);
for( i=lg-1; i>=0; i--)
scanf("%d",&g[i]);
scanf("%d",&lf);
for( i=lf-1; i>=0; i--)
scanf("%d",&f[i]);
scanf("%d",&lh);
for( i=lh-1; i>=0; i--)
scanf("%d",&h[i]);
mul();
mod();
printf("%d",ls);
if(ls==0)
printf("0");
else
for( i=ls-1; i>=0; i--)
{
printf(" %d",s[i]);
}
printf("\n");
}
return 0;
}
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int g[1001],f[1001],s[2001],h[1001];
int lg,ls,lh,lf;
int i,j;
void mul() //乘
{
for( i=0; i<lg; i++)
for( j=0; j<lf; j++)
s[i+j] ^= g[i]*f[j];
ls=lg+lf-1;
return ;
}
void mod()
{
int t;
int res[2001];
while(ls>=lh)
{
memset(res,0,sizeof(res));
t=ls-lh;;
for( i=0; i<lh; i++)
{
if(h[i]==1)
res[i+t]=1;
}
for( i=ls-1; i>=t; i--)
s[i]^=res[i];
for( i=ls-1; i>=0; i--)
{
if(s[i])
{
ls=i+1;
break;
}
ls=0;
}
}
return ;
}
int main()
{
//freopen("in.txt","r",stdin);
int n;
scanf("%d",&n);
while(n--)
{
memset(s, 0, sizeof(s));
memset(f, 0, sizeof(f));
memset(g, 0, sizeof(g));
memset(h, 0, sizeof(h));
scanf("%d",&lg);
for( i=lg-1; i>=0; i--)
scanf("%d",&g[i]);
scanf("%d",&lf);
for( i=lf-1; i>=0; i--)
scanf("%d",&f[i]);
scanf("%d",&lh);
for( i=lh-1; i>=0; i--)
scanf("%d",&h[i]);
mul();
mod();
printf("%d",ls);
if(ls==0)
printf("0");
else
for( i=ls-1; i>=0; i--)
{
printf(" %d",s[i]);
}
printf("\n");
}
return 0;
}
相关文章推荐
- POJ1060 HDU1343 ZOJ1026 UVALive2323 Modular multiplication of polynomials(多项式模2除)
- POJ1060 Modular multiplication of polynomials解题报告 (2011-12-09 20:27:53)
- POJ1060 Modular multiplication of polynomials解题报告 (2011-12-09 20:27:53)
- Modular multiplication of polynomials
- C - Modular multiplication of polynomials(4.3.2)
- poj 1060 Modular multiplication of polynomials (多项式问题)
- C - Modular multiplication of polynomials(4.3.2)
- 1026 Modular multiplication of polynomials
- poj 1060 Modular multiplication of polynomials
- POJ 1060 Modular multiplication of polynomials(多项式的加减乘除,除法转化成减法来求)
- POJ 1060:Modular multiplication of polynomials
- POJ 1060/ ZOJ 1026 : Modular Multiplication of Polynomials - f(x)g(x) mod h(x)
- poj 1060 Modular multiplication of polynomials 二进制多项式取余式运算。
- poj 1060 Modular multiplication of polynomials 除数是大数的高精度除法
- poj 1060 Modular multiplication of polynomials
- Modular multiplication of polynomials 题解
- POJ 1060 Modular multiplication of polynomials 逻辑运算
- zoj 1026 Modular multiplication of polynomials
- ZOJ-1026-Modular multiplication of polynomials
- zoj1026 Modular multiplication of polynomials