티스토리 뷰
728x90
https://www.acmicpc.net/problem/1676
수학3 c++
접근방법
애초에 팩토리얼 구하는 수의 범위가 500까지라(시간제한2초) 팩토리얼을 계산해서 푸는 문제는 아니었다.
가장 작은 자리 수 부터 연속되는 0의 개수를 출력하는 문제라
N부터 0까지 연속되는 수가 모두 곱해서 팩토리얼 결과가 나오는 거니까
0의 개수는 5*2의 개수이다.
근데 연속되는 수니까 2의 개수가 5의 개수의 비해 많을게 분명하다.
따라서 2의 개수는 세지 않고 5의 개수만 센다.
이때 주의할 점은 25, 125같이 2개 이상의 5로 구성된(?)수가 있어서
하나의 수를 5로 나눠질때까지 계속 나눠서 카운트한다. (그래서 변수 k를 하나 더 썼다.)
끝!
맞았습니다
소스코드
#include <iostream>
using namespace std;
int main(){
int n,k;
cin >> n;
int cnt = 0;
for(int i = n ; i > 0 ; i--){
k = i;
while(k%5 == 0){
cnt++;
k = k/5;
}
}
cout << cnt;
return 0;
}
728x90
'알고리즘 문제풀이' 카테고리의 다른 글
[백준 1904] 알고리즘 25일차 : 01타일 (0) | 2020.07.18 |
---|---|
[백준 1003] 알고리즘 24일차 : 피보나치 함수 (0) | 2020.07.16 |
[백준 11653] 알고리즘 22일차 : 소인수분해 (0) | 2020.07.14 |
[백준 1037] 알고리즘 21일차 : 약수 (0) | 2020.07.13 |
[백준 14888] 알고리즘 20일차 : 연산자 끼워넣기 (0) | 2020.07.10 |
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 게임이론
- 웹크롤링
- 파이썬
- dfs
- 다이나믹프로그래밍
- 최대힙
- 수학
- c++
- 브루트포스
- dp
- 가장 큰 수 Swift
- 가장 큰 수 프로그래머스
- 백준
- 동적계획법
- 프로그래머스
- 정렬
- 자바
- 우선순위큐
- 투포인터
- 알고리즘
- 이분탐색
- 그리디알고리즘
- 스택
- BFS
- 최단경로
- 토마토
- 트리
- 최소힙
- Swift
- 백트래킹
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함