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 |
呵呵,献丑了哦,直接拿下午TLE的改的,TLE得我整个contest都没心情做了In Reply To:不要那么大火气:)你可以给我看看你代码吗? Posted by:magic_pig at 2005-07-14 00:36:02 #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