백준 문제 url
<시간 초과 코드>
num = int(input())
list = []
for i in range(num):
a,b = map(int, input().split())
list.append(a**b)
for i in range(num):
print(10 if list[i]%10 == 0 else list[i]%10)
당연히 시간 초과될 줄 알았지만 다른 방법으로 하는 데 애 먹었다.
<코드>
1 | 1 |
2 | 2, 4, 8, 6 |
3 | 3, 9, 7, 1 |
4 | 4, 6 |
5 | 5 |
6 | 6 |
7 | 7, 9, 3, 1 |
8 | 8, 4, 2, 6 |
9 | 9, 1 |
0 | 10 |
각 수를 거듭제곱 했을 때 10으로 나눈 나머지 값은 규칙적인 형태를 띤다. 그 수는 위와 같다.
예를 들어, 22, 32를 거듭제곱 했을 때 10으로 나눈 나머지도 2와 같은 2, 4, 6, 8이 된다.
이런 규칙을 활용하여 a를 10으로 먼저 나눈 나머지 값으로 변경.
list 안에 나오는 형태를 먼저 넣어주고 값이 1개일 때, 2개일 때, 4개일 때 각각 분리해서 2개일 경우와 4개일 경우에는 지수(b)를 나누어주었다.
여기서 조심할 부분은 2^4일경우 답은 6이 되는데 4를 4로 나누면 0이 되어 마지막 값을 다 리스트 0위 치에 삽입하였다.
num = int(input())
result = []
list = [[10],[1],[6,2,4,8],[1,3,9,7],[6,4],[5],[6],[1,7,9,3],[6,8,4,2],[1,9]]
for _ in range(num):
a, b = map(int, input().split())
a = a%10
if a == 0 or a == 1 or a == 5 or a == 6:
result.append(list[a][0])
elif a == 4 or a == 9:
result.append(list[a][b%2])
else:
result.append(list[a][b%4])
for i in range(num):
print(result[i])
'STUDY > Python' 카테고리의 다른 글
[백준/Baekjoon] 1547번 공 파이썬/python 코드 (0) | 2020.10.11 |
---|---|
[백준/Baekjoon] 1085번 직사각형에서 탈출 파이썬/python 코드 (0) | 2020.10.11 |
[백준] 14681번 사분면 고르기 파이썬 코드 (0) | 2020.10.10 |
[백준] 11943번 파일 옮기기 파이썬 코드 (0) | 2020.10.10 |
[백준] 10707번 수도요금 풀이 파이썬 (0) | 2020.10.10 |
댓글