| ||||||||||
| 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