본문 바로가기
Problem Solving

[BOJ 1676] 팩토리얼 0의 개수

by Ladun 2019. 3. 3.

https://www.acmicpc.net/problem/1676

불러오는 중입니다...

N!의 뒤의 0의 개수는 인수로 10을 몇 개로 가지고 있는지를 구하면 된다.

 

10 = 2 * 5이므로 인수로 2와 5를 몇 개를 가지고 있는지를 구하고 더 작은 수를 출력하면된다.

 

하지만 2보다는 항상 5가 많기 때문에 인수로 5를 몇 개 가지고 있는지만 구하면 된다.

 

이는 N을 5, 5^2, 5^3, 5^4.....으로 나눈 값을 모두 더하면 된다.

 

각 수로 나눈 때마다 5가 몇 개 있는지 5^2이 몇 개 있는지 알 수 있다.

 

이는 N >= 5^n까지 구하면 된다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
int main() {
    
    int N;
    scanf("%d"&N);
 
    int sum = 0;
 
    for (int i = 5; i <= N; i *= 5)
    {
        sum += N / i;
    }
 
    printf("%d", sum);
    return 0;
}
cs

 

'Problem Solving' 카테고리의 다른 글

[BOJ 1331] 나이트투어  (0) 2019.03.10
[BOJ 1037] 약수  (0) 2019.03.10
[BOJ 2869] 달팽이는 올라가고 싶다  (0) 2019.03.03
[BOJ 2004] 조합 0의 개수  (0) 2019.03.03
[BOJ 2903] 중앙 이동 알고리즘  (0) 2019.03.03