2011-03-22 4 views
0

n 끝의 0 수를 계산하는 효율적인 방법이 있습니까? 명시 적으로 n을 계산할 필요없이!?n의 끝에있는 0의 수 찾기!

+1

이 내용은 math.stackexchange에서 논의되었습니다. http://math.stackexchange.com/questions/17916/number-of-zeros-at-the-end-of-a-factorial – codaddict

+1

by table lookup : '서명되지 않음 nzeros [] = {0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4 , 4, 4, 6};/* ... * /' – pmg

+0

@pmg : 흠, 왜 프로그래밍 언어가 산술 지원을 방해하는지 궁금하게 생각하게 만듭니다. 우리는 모든 것을 볼 수 있습니다 .-p –

답변

3

N의 끝에있는 0의 수! C

에 대한 I

Σ 층 (I N/5 ) = 1,2,3 ....

간단한 코드 주어진다

i = 1, sum = 0; 
    while(pow(5,i)<= n) 
    { 
     sum += n/(pow(5,i)); 
     i++; 
    } 
5

예있다. 주요 아이디어 : (1) n을 나눌 수있는 5의 가장 큰 힘과 같습니다! (2)는 5의 배수에서 n까지의 배수, 25까지의 배수 + n의 125 배수를 더한 것입니다.

그러나 스택에 속하지 않습니다 과다.

2

n의 십진수 표현의 0 수! 10이 큰 숫자의 요소로 나타나는 횟수입니다. 따라서 2x5의 횟수가 나타납니다. 따라서 5보다 많은 요소가 2 개 이상 발생합니다 (왜?), 5 번 요소가 n의 요소입니다.

그래서, 당신의 면접 질문은 표현

1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x ... x (n-1) x n 

항목의 요인으로 얼마나 많은 파이브 나타 납니까?

관련 문제