별의 공부 블로그 🧑🏻‍💻
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
그리드형(광고전용)
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️
starrykss
starrykss
별의 공부 블로그 🧑🏻‍💻


📖 Contents 📖