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

无限WA。。求救。。

Posted by mywater at 2010-12-05 21:56:57 on Problem 3233
#include<stdio.h>
#include<string.h>

#define N 31

int m1,n1,k1;

struct Matrix
{
	int n;
	int m[N][N];
	
	Matrix operator * (const Matrix& M)
	{
		Matrix temp;
		temp.n = M.n;
		int i,j,sum,u;
		memset(temp.m,0,sizeof(temp.m));
		for(i = 0;i < n;i++)
		{
			for(j = 0;j < n;j++)
			{
				sum = 0;
				for(u = 0;u < n;u++)
					sum = (sum + m[i][u] * M.m[u][j] % m1) % m1;
				temp.m[i][j] = sum;
			}
		}
		return temp;
	}

	Matrix operator + (const Matrix& M)
	{
		Matrix temp;
		temp.n = M.n;
		int i,j;
		for(i = 0;i < n;i++)
			for(j = 0;j < n;j++)
				temp.m[i][j] = (m[i][j] + M.m[i][j]) % m1;
		return temp;
	}
}k;

Matrix pow(Matrix& M,int t)
{
	Matrix temp;
	if(t == 1)
		return M;
	temp = M * M;
	if(t & 1)
		return pow(temp,t / 2) * temp;
	return pow(temp,t / 2);
}

Matrix sum(Matrix& M,int t)
{
	if(t == 1)
		return M;
	Matrix temp,temp1;
	temp = pow(M,t / 2);
	temp1 = sum(M,t / 2);
	if(t & 1)
		return temp * temp1 + temp1 + temp * temp * M ;
	return temp * temp1 + temp1;
}


int main()
{
	while(scanf("%d %d %d",&n1,&k1,&m1) != EOF)
	{
		int i,j;
		k.n = n1;
		for(i = 0;i < n1;i++)
			for(j = 0;j < n1;j++)
			{
				scanf("%d",&k.m[i][j]);
				k.m[i][j] %= m1;
			}
		Matrix temp;
		temp.n = n1;
		temp = sum(k,k1);
		for(i = 0;i < n1;i++)
		{
			for(j = 0;j < n1;j++)
				printf("%3d",temp.m[i][j]);
			printf("\n");
		}
	}
	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