728x90
728x170
문제
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)
출력
첫째 줄에 구한 0의 개수를 출력한다.
예제 입력
10 |
예제 출력
2 |
힌트
출처
· 문제를 만든 사람: author6
코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include <iostream> using namespace std; int main() { int cnt = 0, n; cin >> n; for (int i = 1; i <= n; i++) { if (i % 125 == 0) cnt += 3; else if (i % 25 == 0) cnt += 2; else if (i % 5 == 0) cnt++; } cout << cnt << endl; return 0; } | cs |
- 다소 어려웠던 문제.
- 팩토리얼 값의 0의 개수는 2*5의 개수에 의해 결정된다.
ex) 20 = 5*2*2 => 5와 2가 쌍으로 1개씩 있음. (0:1개)
1000 = (5*2)*(5*2)*(5*2) => 5와 2가 쌍으로 3개씩 있음. (0:3개)
- 2는 짝수 일 때 마다 나타나므로, 이 문제는 결국 0부터 N까지 5의 배수의 수를 찾는 문제가 된다.
728x90
그리드형(광고전용)
'Problem Solving > BaekJoon Online Judge' 카테고리의 다른 글
[BOJ2439][C++] 별찍기 - 2 (0) | 2017.11.09 |
---|---|
[BOJ2348][C++] 별찍기 - 1 (0) | 2017.11.09 |
[BOJ1357][C++] 뒤집힌 덧셈 (0) | 2017.11.09 |
[BOJ11050][C++] 이항 계수 1 (0) | 2017.11.08 |
[BOJ11004][C++] K번째 수 : 오름차순 정렬 (0) | 2017.11.08 |
[BOJ10872][C++] 팩토리얼 (0) | 2017.11.08 |
[BOJ2750][C++] 수 정렬하기 : 오름차순 정렬 (0) | 2017.11.08 |
[BOJ2748][C++] 피보나치 수 2 (0) | 2017.11.08 |