반응형
2와 5의 지수만 세면 되는 간단한 문제!
예를 들어 5! = 1 X 2 X 3 X 4 X 5, 10이 곱해질 때마다 0의 개수가 1개 추가되므로 10의 약수인 2와 5가 한번씩 곱해진다면 같은 의미(0의 개수 1추가)를 가지게 됩니다. 팩토리얼 안에 곱해지는 숫자들을 각각 2와 5로 약분하여 지수를 구해 모두 합쳤고 2 X 5를 한 세트로 2와 5의 지수를 하나씩 빼가며 답을 구했습니다.
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #include <iostream> using namespace std; int main() { //2와 5의 지수만 세면 된다. int two=0; int five=0; int cnt=0; int n; cin >> n; for (int i = 0; i <= n; i++) { int tmp = i; while (1) //5로 계속 나누어 떨어지면 루프 { if (tmp >= 5 && tmp % 5 == 0) { tmp /= 5; five++; } else break; } while (1) { if (tmp >= 2 && tmp % 2 == 0) //2로 나눠지고 2보다 크다면 { tmp /= 2; two++; } else break; } } while (1) //2의 지수, 5의 지수 모두 0이 아닌 동안 루프를 돈다. { if (two == 0 || five == 0) break; else { cnt++; two--; five--; } } cout << cnt << '\n'; } | cs |
'Algorithm' 카테고리의 다른 글
(C++) - 백준(BOJ) 7572번 : 간지(干支) 답 (0) | 2019.02.08 |
---|---|
(C++) - 백준(BOJ) 10816번 : 숫자 카드 2 답 (0) | 2019.02.02 |
C++(씨쁠쁠)(cplusplus) - 백준(baekjoon)(BaekJoon)코딩 15552번 : 빠른 A+B 답 (0) | 2019.01.28 |
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 10984번:내 학점을 구해줘 답 (0) | 2019.01.25 |
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 1003번 : 피보나치 함수 (0) | 2019.01.25 |