Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 백준
- 문자열
- 논문리뷰
- 전국 대학생 수학 경시대회
- 집합과 맵
- 실버 5
- baekjoon
- lqr
- 구현
- baekjoon problem solving
- C++
- 텔레스코픽로봇
- 자료구조
- 큐
- 최적제어
- 로봇공학
- HJB방정식
- BOJ
- mathematics for computer science
- 정렬
- 실버 4
- 로보틱스
- 6.042j
- 수학
- LeggedRobot
- mit
- MIT opencourse
- 다리로봇
- std::sort
- 대수경
Archives
- Today
- Total
서두르지 말고 쉬지 말자
백준 1676번 팩토리얼 0의 개수(C++) 본문
solvd.ac 티어 : 실버5
문제 유형: 수학
문제 해결 방안 : 문제에서 최댓값인 500!은 너무 큰값이라서 일반적인 방법으로는 되지 않는다. 팩토리얼로 만든 값을 소인수분해하면 2가 항상 5보다 많고 10은 2와 5의 곱이다. 따라서 5가 몇번 곱해져 있는지를 세면 된다. 예를 들어 n이 15이면 5의 배수 5 10 15가 곱해져있다 15 = 5 * 3 즉, 15팩토리얼은 5가 곱해져 있는 수 3개가 곱해져 있다. 또한, 25는 5가 두번 곱해져있지만 5로 나누면 5가 1개 있는 수로 카운트 된다. 따라서 5 뿐만 아니라 25 125 625 ...으로도 나눠서 카운트 해줘야 한다.
문제 해결 소감 :무식하게 풀려고 해서 못 풀어서 인공지능에 물어봤다. 팩토리얼은 일반적인 반복문을 이용해서는 풀지 못한다는 것을 알고 있자.
#include <iostream>
int n = 0;
int cnt = 0;
int fac = 1;
int main()
{
std::cin >> n;
for (int i = 5; i < n; i *= 5)
{
cnt += n / i;
}
std::cout << cnt;
return 0;
}반응형
'코딩 공부 > Baekjoon Problem Solving' 카테고리의 다른 글
| 백준 15829번 Hashing (C++) (0) | 2025.07.07 |
|---|---|
| 백준 9012번 괄호 (C++) (1) | 2025.07.05 |
| 백준 10845번 큐(C++) (0) | 2025.04.25 |
| 백준 1620번 나는야 포켓몬 마스터 이다솜(C++) (0) | 2025.04.17 |
| 백준 11723번 집합(C++) (0) | 2025.04.15 |
