본문 바로가기
알고리즘

BOJ 1676 팩토리얼 0의 개수

by LaTale 2018. 10. 4.

N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.





결과값을 구해서 0을 세는 식으로 할 필요가 없는 문제다.


2 * 5만 10이 되고 이는 맨 뒤에 0으로 붙기 때문에 2 또는 5의 개수만 세주면 된다.


아무래도 5의 개수가 적을테니 5의 개수를 세면 된다.


유의할 점은 5의 제곱들[각주:1]도 따로 세어주어야 한다.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
// 1676 팩토리얼 0의 개수
#include<stdio.h>
#define FOR(i,j) for(int i=1;i<=j;i++)
int main() {
	int N, cnt = 0;
	scanf("%d", &N);
	FOR(i, N) {
		if (!(i % 5)) cnt++;
		if (!(i % 25)) cnt++;
		if (!(i % 125)) cnt++;
	}
	printf("%d", cnt);
	return 0;
}




  1. 25, 125 [본문으로]

'알고리즘' 카테고리의 다른 글

BOJ 2490 윷놀이  (0) 2019.04.21
BOJ 10871 X보다 작은 수  (0) 2019.04.21
BOJ 10872 팩토리얼  (0) 2018.10.04
BOJ 11051 이항 계수2  (0) 2018.10.04
BOJ 11050 이항 계수1  (0) 2018.10.04