zoj-1026

来源:互联网 发布:电魂网络与阿里巴巴 编辑:程序博客网 时间:2024/05/19 19:43
#include<stdio.h>#include<memory.h>#include<algorithm>#define MAX 1000struct poly{    int degree;    int x[MAX*2];};void read(poly &f){    scanf("%d",&f.degree);    for(int i=f.degree-1;i>=0;--i)        scanf("%d",&f.x[i]);}int mult(poly f,poly g,poly &product){    memset(product.x,0,sizeof(product.x));    for(int i=0;i<f.degree;++i)        for(int j=0;j<g.degree;++j)            product.x[i+j]=(product.x[i+j]+f.x[i]*g.x[j])%2;    product.degree=f.degree+g.degree-1;}void mod(poly &m,poly h){    int i;    while(1)    {        i=m.degree-1;        while(i>=0 && !m.x[i])            --i;        if(i<h.degree-1)        {            m.degree=i+1;            break;        }        for(int j=h.degree-1;j>=0;--i,--j)            m.x[i]=abs(m.x[i]-h.x[j])%2;    }}int main(){    //freopen("d:\\test.txt","r",stdin);    int t;    scanf("%d",&t);    while(t--)    {        poly f,g,h,answer;        read(f);        read(g);        read(h);        mult(f,g,answer);        mod(answer,h);        printf("%d ",answer.degree);        for(int i=answer.degree-1;i>0;--i)            printf("%d ",answer.x[i]);        printf("%d\n",answer.x[0]);    }    return 0;}

原创粉丝点击