http://acm.pku.edu.cn/JudgeOnline/problem?id=1060
#include<iostream.h> #include<string.h> int fab(int a) { if(a>=0) return a; if(a<0) return -a; } int main() { int a[1001],b[1001],c[1001],*r,n,i,j,flag,left,x,y,z,lcj; cin>>n; while(n--) { cin>>x; for(i=x-1;i>=0;i--) cin>>a[i]; cin>>y; for(i=y-1;i>=0;i--) cin>>b[i]; cin>>z; for(i=z-1;i>=0;i--) cin>>c[i]; r=new int[x+y-1]; memset(r,0,sizeof(r)); for(i=0;i<x;i++) for(j=0;j<y;j++) { r[i+j]+=a[i]*b[j]; } for(i=0;i<=x+y-2;i++) r[i]=fab(r[i])%2; flag=x+y-2; while(flag>=(z-1)) { left=flag-z+1; for(i=0;i<z;i++) r[i+left]=r[i+left]-c[i]; lcj=0; for(i=x+y-2;i>=0;i--) {r[i]=fab(r[i]); if(r[i]!=0&&lcj==0) {flag=i; lcj=1;} } } for(i=0;i<=x+y-2;i++) r[i]=fab(r[i])%2; cout<<flag+1<<" "<<r[flag]; for(i=flag-1;i>=0;i--) cout<<" "<<r[i]; cout<<endl; } return 0; }