Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

一次ac,0MS,200题发代码留念

Posted by hitfrank at 2010-05-14 10:25:22 on Problem 1060
#include <iostream>
using namespace std;
void sub(int *a,int *b,int *res,int lena,int lenb)
{
	for(int i=0;i<max(lena,lenb);i++)
		res[i]=a[i]^b[i];
}
void multiply(int *a,int *b,int *res,int lena,int lenb)
{
	for(int i=0;i<lena;i++)
	{
		for(int j=0;j<lenb;j++)
		{
			res[i+j]^=(a[i]*b[j]);
		}
	}
}
int main()
{
	int a[2100],b[2100],temp[2100],res[2100],c[2100];
	int testcase;
	cin>>testcase;
	int lena,lenb,lenres,lenc;
	while(testcase--)
	{
		memset(a,0,sizeof(a));
		memset(b,0,sizeof(b));
		memset(res,0,sizeof(res));
		memset(temp,0,sizeof(temp));
		scanf("%d",&lena);
		for(int i=lena-1;i>=0;i--)
			scanf("%d",a+i);
		scanf("%d",&lenb);
		for(int i=lenb-1;i>=0;i--)
			scanf("%d",i+b);

		multiply(a,b,res,lena,lenb);
		lenres=lena+lenb-1;
		
		scanf("%d",&lenc);
		for(int i=lenc-1;i>=0;i--)
			scanf("%d",c+i);
		while(lenc<=lenres)
		{
			int diff=lenres-lenc;
			for(int i=0;i<diff;i++)
				temp[i]=0;
			for(int i=0;i<lenc;i++)
				temp[i+diff]=c[i];
			sub(res,temp,res,lenres,lenres);
			int i;
			for(i=2099;i>=0;i--)
			{
				if(res[i]!=0)
					break;
			}
			lenres=i+1;
		}
		cout << lenres;
		for(int i=lenres-1;i>=0;i--)
			printf(" %d",res[i]);
		cout << endl;
	}
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator