[BOJ 1009] 분산처리
1) 문제 링크
https://www.acmicpc.net/problem/1009
2) 접근
자연수의 거듭제곱에서 나타나는 일의 자리의 규칙성에 관한 문제이다. 어차피 일의 자리는 10가지 밖에 없으니 처음에는 하드코딩을 해서 풀 생각을 했다. 그리고 그렇게 풀어버렸다.
3) 풀이
unit_digit = [ [10], [1], [6,2,4,8], [1,3,9,7], [6,4], [5], [6], [1,7,9,3], [6,8,4,2], [1,9] ]
T = int(input())
for i in range(T):
a, b = map(int, input().split())
cycle = len(unit_digit[a%10])
print(unit_digit[a%10][b%cycle])
4) 피드백
역시 하드코딩은 좀 그렇다. TLE 안 나게 거듭제곱하는 방법은 없을까? -> 모든 1의 자리는 공통적으로 지수 4를 주기로 하여 순환한다. 따라서 b %= 4(단, b % 4 == 0인 경우는 b = 4) 처리 후 거듭제곱 하면 깔끔!
Leave a comment