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,跟过了的程序对了1000*1000的数据都一样。有大牛帮我看看吗?

Posted by jackfeng at 2008-11-21 21:18:00 on Problem 1845
#include <cstring>
#include <cstdio>

const int MAX_SIZE = 10000;

bool notprime[MAX_SIZE];
int prime1[MAX_SIZE],primenum;

void init()
{
	memset(notprime,0,sizeof(notprime));
	primenum = 0;
	for(int i = 2;i < MAX_SIZE;++i)
	{
		if(!notprime[i])
		{
			prime1[primenum++] = i;
			for(int j = i*i;j < MAX_SIZE;j += i)
				notprime[j] = 1;
		}
	}
}

long long power(long long k,long long n,int MOD){
	long long ans,sp;
	for(ans=1,sp=k%MOD;n>0;n>>=1,sp=sp*sp%MOD)
		if(n&1)ans=ans*sp%MOD;
	return ans;
}

struct ReturnType
{
	long long u,v,d;
};

ReturnType Extended_Euclid(long long a,long long b)
{
	ReturnType r;
	if(b)
	{
		r = Extended_Euclid(b,a%b);
		long long v = r.v;
		r.v = r.u-a/b*r.v;
		r.u = v;
	}
	else
	{
		r.u = 1;
		r.v = 0;
		r.d = a;
	}
	return r;
}

int DivMod(long long a,long long b,int p)
{
	ReturnType r = Extended_Euclid(b,p);
	r.u %= p;
	if(r.u < 0)
		r.u += p;
	return ((a%p)*(r.u%p))%p;
}

int main()
{
	long long a,b,temp = 1;
	init();
	while(scanf("%lld%lld",&a,&b) == 2)
	{
		if(a % 9901 == 0)
		{
			temp = 0;
		}
		else if(b == 0)
		{
			temp = 1;
		}
		else{
		temp = 1;
		for(int i = 0;prime1[i]*prime1[i] <= a;++i)
		{
			if(a % prime1[i] == 0)
			{
				int t = 0;
				while(a%prime1[i] == 0)
				{
					++t;
					a /= prime1[i];
				}
				temp *= DivMod(power(prime1[i],b*t+1,9901)-1,prime1[i]-1,9901);
				temp %= 9901;
			}
		}
		if(a != 1)
			temp *= DivMod(power(a,b+1,9901)-1,a-1,9901);
		temp %= 9901;
		}
		printf("%lld\n",temp);
	}
}

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