BOJ-1009 분산처리
https://www.acmicpc.net/problem/1009
문제 소개
컴퓨터가 10대 있을 때, 정수 $a$와 $b$가 주어지면 $a^b$번째 데이터가 몇 번째 컴퓨터로 처리될지 계산한다.
문제 풀이
필요한 것은 $a^b$를 10으로 나누었을 때 나머지이므로 a
를 10으로 나눈 나머지를 a
로 사용한다.
그리고 수를 거듭제곱하게 되면 일의 자리의 수는 일정 주기로 반복되는데, 1/2/4를 주기로 반복된다. 이에 따라 b
도 b
를 4로 나눈 나머지로 사용한다.
a
가 10으로 나누어 떨어지는 경우 10번 컴퓨터를 사용하게 됨을 의미하며,b
가 4로 나누어 떨어지는 경우b
를 4로 지정해 준다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import sys
input = lambda: sys.stdin.readline().rstrip()
t = int(input())
for _ in range(t):
a, b = map(int, input().split())
a %= 10
if a == 0:
print(10)
continue
b %= 4
if b == 0:
b = 4
print(str(a ** b)[-1]) # 마지막 자릿수 출력
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.