
문제 링크
1676번: 팩토리얼 0의 개수
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
www.acmicpc.net
풀이
0의 개수를 구하기 위해서는 n! = k * 10^a에서 a를 구하면 된다. 이때 10을 만들기 위해서는 5와 2가 필요한데 n!에서 2의 개수는 항상 5의 개수보다 많기 때문에 n!에서 5의 개수를 구하면 된다.
코드
#include <cstdio>
int main() {
int n; scanf("%d", &n);
int ret = 0;
while (n) {
ret += n / 5;
n /= 5;
}
printf("%d", ret);
}
'Algorithm > BOJ' 카테고리의 다른 글
백준[5430] AC (0) | 2021.10.29 |
---|---|
백준[16234] 인구 이동 (0) | 2021.10.29 |
백준[20208] 진우의 민트초코우유 (0) | 2021.10.27 |
백준[1037] 약수 (0) | 2021.10.26 |
백준[1270] 전쟁 - 땅따먹기 (0) | 2021.10.22 |