| ||||||||||
Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
兄弟你 过了么??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: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator