N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
결과값을 구해서 0을 세는 식으로 할 필요가 없는 문제다.
2 * 5만 10이 되고 이는 맨 뒤에 0으로 붙기 때문에 2 또는 5의 개수만 세주면 된다.
아무래도 5의 개수가 적을테니 5의 개수를 세면 된다.
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; } |
- 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 |