3 팩토리얼은 6이기 때문에 0이 없으므로 -> 0
10팩토리얼은 뒤에서부터 0의 개수가 2개이므로 -> 2 가 출력되어야 한다.
#include <iostream>
using namespace std;
int main() {
int N;
cin >> N;//입력받을 정수
int result = 0;
for (int i = 1; i <= N; i++) {
int check = i;
int count = 0;
while (check % 5 == 0) {//check가 5로 나누어떨어질 경우
check /= 5;//check를 5로 나누고 count 1증가
count++;//N이 5제곱승 이상일 경우 count계속 증가(while문)
}
if (count != 0) {//while문에서 다 더한 count를 result에 넣음
result += count;
}
}
cout << result;
}
맨 마지막에 나오는 0의 개수는 5의 개수로 판별할 수 있다.
맨 마지막에 나오는 0의 개수는 곧 10의 개수인데 10은 2x5이다
이때 1부터 N까지의 수를 소인수 분해 했을 때 2의 개수>5의 개수이므로 5의 개수만을 구해서 정답을 유도할 수 있다.
'백준 c++ > (1-1)백준 c++ 알고리즘 기초' 카테고리의 다른 글
백준 9613 c++ GCD합 (0) | 2022.07.07 |
---|---|
백준 2004 c++ 조합 0의 개수 (0) | 2022.07.07 |
백준 10872 c++ 팩토리얼 (0) | 2022.07.05 |
백준 6588 c++ 골드바흐의 추측 (0) | 2022.07.05 |
백준 1158 c++ 요세푸스 문제 (0) | 2022.07.04 |