| ||||||||||
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 |
在本地运行,很快的,怎么会超时呢?帮忙分析一下#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