포스트

BOJ-1009 분산처리

https://www.acmicpc.net/problem/1009

문제 소개

컴퓨터가 10대 있을 때, 정수 $a$와 $b$가 주어지면 $a^b$번째 데이터가 몇 번째 컴퓨터로 처리될지 계산한다.

문제 풀이

필요한 것은 $a^b$를 10으로 나누었을 때 나머지이므로 a를 10으로 나눈 나머지를 a로 사용한다.

그리고 수를 거듭제곱하게 되면 일의 자리의 수는 일정 주기로 반복되는데, 1/2/4를 주기로 반복된다. 이에 따라 bb를 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 라이센스를 따릅니다.

인기 태그