문제
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)
출력
첫째 줄에 구한 0의 개수를 출력한다.
내 제출
#include <stdio.h>
int main() {
int N;
int mul5 = 0; // 5의 배수
int mul25 = 0; // 25의 배수
int mul125 = 0; // 125의 배수
scanf("%d", &N);
mul5 = N / 5;
mul25 = N / 25;
mul125 = N / 125;
printf("%d", mul5 + mul25 + mul125);
return 0;
}
팩토리얼 문제라서 계산을 해야 할 것 같지만 이 문제를 훨씬 간단하게 푸는 방법이 있다.
바로 5의 개수를 세는 것이다.
10의 배수가 되기 위해서는 5가 무조건 있어야 한다. (물론 2도 필요하지만 2의 배수는 종류가 다양하므로 이하 생략)
따라서 5의 배수를 10의 배수로 간주하고 계산하면 훨씬 편하게 답을 구할 수 있다.
N을 입력받고, N까지의 5의배수, 25의 배수, 125의 배수를 세어 모두 더해 답을 구했다.