문제
https://www.acmicpc.net/problem/1009
1009번: 분산처리
입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다. (1 ≤ a < 100, 1 ≤ b < 1,000,000)
www.acmicpc.net
내 풀이
- 단순하게 제곱으로 접근할 시 시간초과가 난다.
- pow(x, y[, z])If a third parameter is present, it returns x to the power of y, modulus z.
- The `pow()` function returns the value of x to the power of y (xy).
- pow 함수나 **연산자는 내부 로직에서 같은 라이브러리 함수를 사용하기 때문에 시간 차이가 나지 않는다.
- 하지만 pow(x,y,z) 와 a**b%c는 압도적인 속도 차이가 난다.
- 아래는 timeit 함수를 이용하여 시간을 측정한 결과이다.
show_timeit('a ** b % 10', 'a = 30; b = 400')
show_timeit('a ** b', 'a = 30; b = 400')
show_timeit('pow(a, b, 10)', 'a = 30; b = 400')
show_timeit('pow(a, b)', 'a = 30; b = 400')
a = 30; b = 400; a ** b % 10:
1.8108850999269634
a = 30; b = 400; a ** b:
1.5049420001450926
a = 30; b = 400; pow(a, b, 10):
0.5822447999380529
a = 30; b = 400; pow(a, b):
1.5555299001280218
타인의 풀이
- 다른 분들은 1의 자리가 반복되는 걸 이용해서 푸는 경우가 많은 것 같다.
참고문서
'TIL > 이전 풀이' 카테고리의 다른 글
| [python] Leetcode 34. Find First and Last Position of Element in Sorted Array (0) | 2022.12.13 |
|---|---|
| [python] Leetcode 15. 3Sum (1) | 2022.12.13 |
| BOJ_12904: A와 B (0) | 2022.10.31 |
| boj_2839_설탕 배달 (0) | 2022.10.24 |
| boj_2512_예산 (1) | 2022.09.28 |