728x90
https://www.acmicpc.net/problem/1676
문제 풀이
처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 만드는 것이다.
1부터 차근차근하나 곱하다 보면 규칙성을 알 수 있다.
바로 10의 값이 곱해질 때마다 1의 자리에 0이 추가된다.
고로 이 문제는 2와 5의 갯수를 따지는 문제이다.
하지만 2의 개수는 5의 개수보다 절대적으로 많을 수밖에 없다.
문제를 쉽게 만들기 위해서 5의 개수만 따져주면 된다.
느낀 점
규칙성을 찾긴 했는데 구현하는 데에 있어서 살짝 해맨 것 같다. 오랫동안 코딩을 쉬었더니 많이 감이 죽었다.
코드
#include <iostream>
using namespace std;
int n, cnt = 0;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> n;
for (int i = 2; i <= n;i++) {
int tmp = i;
while (1) {
if (tmp % 5 == 0) {
cnt++;
tmp /= 5;
}
else break;
}
}
cout << cnt;
}
'문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[C++] 백준 10773번 : 제로 (0) | 2021.07.21 |
---|---|
[C++] 백준 10828번 : 스택 (0) | 2021.07.21 |
[C++] 백준 9375번 : 패션왕 문희조 (0) | 2021.07.19 |
[C++] 백준 1010번 : 다리 놓기 (0) | 2021.07.19 |
[C++] 백준 11051번 : 이항 계수 2 (0) | 2021.07.11 |
댓글