문제
문제 해석
- 입력 받은 수의 팩토리얼가 뒤에 0이 몇개 붙는지를 세면 되는 문제이다.
알고리즘
- 곱에서 뒷자리가 0이 나오는 경우는 2의 배수와 5의 배수가 곱해지는 경우이다.
- 팩토리얼은 1부터 순서대로 곱하기 때문에 5의 배수가 곱해 질 때는 항상 짝수와 곱해진다.
- 이때 주의 할 점은 25, 125 처럼 5의 제곱수가 곱해질 때는 5가 2번 3번 곱해질 때는 0 또한 2개, 3개가 붙는다.
- 정리하면 숫자 N 이 주어 졌을 때 1 ~ N 까지 하나씩 증가 시키며
- 5의 배수가 나올 때 마다 0이 하나씩
- 25의 배수가 나올 때 마다 0이 두개씩
- 125의 배수가 나올 때 마가 0이 세개씩 붙게 된다.
- 이를 모두 count 해 주면 뒤에 붙는 0의 총 개수가 나오게 된다.
코드
#include <iostream>
using namespace std;
int input;
int main(){
cin >> input;
int cnt = 0;
for(int i = 1; i <= input; i++){
if(i % 5 == 0){
cnt += 1;
}
if(i % 25 == 0){
cnt += 1;
}
if(i % 125 == 0){
cnt += 1;
}
}
cout << cnt << '\n';
}
'알고리즘 > 백준' 카테고리의 다른 글
백준_2839 : 설탕 배달 - C++ (0) | 2023.06.25 |
---|---|
백준_2798 : 블랙잭 - C++ (0) | 2023.06.25 |
백준_1620 : 나는야 포켓몬 마스터 이다솜 - C++ (2) | 2023.05.27 |
백준_1966 : 프린터 큐 - C++ (0) | 2023.05.27 |
백준_1929 : 소수 구하기 - C++ (0) | 2023.05.27 |