hwooo
BOJ (C/C++) 1676번: 팩토리얼 0의 개수 본문
https://www.acmicpc.net/problem/1676
1676번: 팩토리얼 0의 개수
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
www.acmicpc.net


풀이
0의 개수 = 소인수분해 시 10의 개수 = 소인수분해 시 2와 5의 개수 중 작은 값 (곱해서 10이 나와야 하니까)
코드
#include <stdio.h>
int main() {
int N, n;
int cnt_2 = 0, cnt_5 = 0, cnt;
scanf("%d", &N);
for (int i = 2; i <= N; i++) {
n = i;
while (n % 2 == 0) {
n /= 2;
cnt_2++;
}
while (n % 5 == 0) {
n /= 5;
cnt_5++;
}
}
cnt = cnt_2 > cnt_5 ? cnt_5 : cnt_2;
printf("%d", cnt);
return 0;
}
'Study > Algorithm' 카테고리의 다른 글
BOJ (C/C++) 10814번: 나이순 정렬 (0) | 2022.10.20 |
---|---|
BOJ (C/C++) 2004번: 조합 0의 개수 (0) | 2022.10.19 |
BOJ (C/C++) 1181번: 단어 정렬 (0) | 2022.10.19 |
BOJ (C/C++) 3053번: 택시 기하학 (0) | 2022.10.14 |
(C/C++) 14495번: 피보나치 비스무리한 수열 (0) | 2022.08.01 |