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

兄弟你 过了么??

Posted by y05dzz at 2007-10-06 19:16:05 on Problem 3421
In Reply To:在本地运行,很快的,怎么会超时呢?帮忙分析一下 Posted by:willard at 2007-10-06 16:51:04
> #include <stdio.h>
> #include <math.h>
> #define SIZE 100000
> int maxl = 0;
> int maxc = 0;
> 
> void digui(int num, const int prime[], int deep)
> {
> 	if(num==1)
> 	{
> 		if(maxl==deep)
> 			maxc++;
> 		else if(maxl < deep)
> 		{
> 			maxl = deep;
> 			maxc = 1;
> 		}
> 		return;
> 	}
> 	int i = 0, j = 0, c=0;
> 	while(prime[i]>0)
> 	{
> 		if(num >= prime[i] && num!=0 && num%prime[i]==0)
> 			digui(num/prime[i], prime, deep+1);
> 		i++;
> 	}
> }
> 
> void main()
> {
> 	int num;
> 	while(EOF!=scanf("%d", &num))
> 	{
> 		maxl = 0;
> 		maxc = 0;
> 		if(num==0)
> 		{
> 			printf("0 0\n");
> 			continue;
> 		}
> 		int i, j = 0, prime[100000] = {0}, copy = num;
> 		for(i = 2; i<=num; i++)
> 		{
> 			int save = num;
> 			while(num%i==0)
> 			{
> 				num = num / i;//莫非这里导致TLE???
> 			}
> 			if(num!=save)
> 				prime[j++] = i;
> 		}
> 		digui(copy, prime, 0);
> 		if(maxl == 0)
> 			printf("1 1\n");
> 		else
> 			printf("%d %d\n", maxl, maxc);
> 	}
> }

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