반응형
문제 출처 :
https://www.acmicpc.net/problem/7894
알고리즘 분석 :
문제 해결에 필요한 사항
1. 팩토리얼
2. log10
3. 수학
이 문제를 보면 정말 느껴지는 것은
'수학을 잘해야 알고리즘도 잘 할 수 있구나' 라는 것을 느낄 수 있다.
무조건 수학을 잘해야 하는것은 아니지만, 알고리즘을 잘하려면 수학을 잘하면 좋다는 것이다.
고등학교 수학을 배웠다면 알 수 있는것이 있다.
1000이면 log1000 = 3
100이면 log100 = 2
...
1이면 log1 = 0
123456이면 log123456 = 5이다.
이를 통해 팩토리얼에 접목해보자.
결국 위의 식에서 +1을 해주면 정답이 나온다.
소스 코드 :
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 | #include <iostream> #include <cstdio> #include <cmath> int main() { int n; scanf("%d", &n); while (n--) { int m; scanf("%d", &m); double ans = 0.0; for (double i = (double)m; i > 0; i--) ans += log10(i); printf("%d\n", (int)(ans+1)); } return 0; } // This source code Copyright belongs to Crocus // If you want to see more? click here >> | Crocus |
반응형
'Applied > 알고리즘 문제풀이' 카테고리의 다른 글
[2243번] 사탕 상자 (2) | 2017.03.16 |
---|---|
[3653번] 영화 수집 (0) | 2017.03.16 |
[8012번] 한동이는 영업사원! (0) | 2017.03.15 |
[1761번] 정점들의 거리 (0) | 2017.03.15 |
[11437번] LCA (0) | 2017.03.15 |