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:呵呵,献丑了哦,直接拿下午TLE的改的,TLE得我整个contest都没心情做了 Posted by:frkstyc at 2005-07-14 00:39:01 > #include <stdio.h> > > int phi[1000001]; > int comp[1000001]; > int prime[1000], primes; > __int64 tab[1000001]; > > void eratosthenes(void) > { > int i, j; > for(i = 2; i < 1000; i++) > { > if(!comp[i]) > { > for(j = i * 2; j <= 1000000; j += i) > { > comp[j] = 1; > } > } > } > for(i = 2; i < 1100; i++) > { > if(!comp[i]) > { > prime[primes++] = i; > } > } > } > > int main(void) > { > int i, j; > eratosthenes(); > for(i = 2; i <= 1000000; i++) > { > phi[i] = i; > if(comp[i]) > { > int p = i; > if((p & 1) == 0) > { > phi[i] >>= 1; > do > { > p >>= 1; > } > while((p & 1) == 0); > } > for(j = 1; prime[j] * prime[j] <= p; j++) > { > int t = prime[j]; > if(p % t == 0) > { > phi[i] = phi[i] / t * (t - 1); > for(;;) > { > int s = p / t; > if(s * t == p) > { > p = s; > } > else > { > break; > } > } > } > } > if(p > 1) > { > phi[i] = phi[i] / p * (p - 1); > } > } > else > { > phi[i]--; > } > tab[i] = tab[i - 1] + phi[i]; > } > for(;;) > { > int n; > scanf("%d", &n); > if(n == 0) > { > break; > } > printf("%I64d\n", tab[n]); > } > return 0; > } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator