백준 1676 팩토리얼 0의 개수 C++
2023. 9. 14. 13:30ㆍ알고리즘문제 풀이/백준
문제
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)
출력
첫째 줄에 구한 0의 개수를 출력한다.
풀이
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하기 위해
N! = a * 10^b 에서 b의 최댓값을 구해야 한다.
10^b = (2 * 5)^b이다.
1 * 2 * 3 * 4 * .... * N = N! 에서
2의 배수의 개수가 5의 배수의 개수보다 더 많이 곱해져 있으므로
N! 이 가지고 있는 5의 개수를 구해야한다.
N! 이 5로 최대 몇번 나누어 떨어지는지 구하면 처음 0이 아닌 숫자가 나올 때까지의 0의 개수를 구할 수 있다.
#include <iostream>
using namespace std;
int main()
{
int n, k, c;
c = 0;
cin >> n;
for(int i = 5; i <= n; i = i + 5){
c += 1;
k = i / 5;
while(k % 5 == 0) {
c += 1;
k = k / 5;
}
}
cout << c;
return 0;
}'알고리즘문제 풀이 > 백준' 카테고리의 다른 글
| 백준 1759 암호 만들기 C++ (0) | 2023.09.14 |
|---|---|
| 백준 1712 손익분기점 Python (1) | 2023.09.14 |
| 백준 1629 곱셈 Python (0) | 2023.09.14 |
| 백준 1550 16진수 C++ (0) | 2023.09.14 |
| 백준 1546 평균 C++ (0) | 2023.09.14 |