[백준 1009: 분산처리 ] python 파이썬

SUHA JEONG·2021년 11월 10일
1

Algorithm 문제

목록 보기
2/3

< 해결 아이디어 >

  • 데이터의 1의 자리 수에 따라 컴퓨터가 매칭되는 것을 알 수 있다.
  • 총 데이터의 개수가 a의 b제곱이다. 어떠한 수를 제곱하면 1의 자리 수는 반복된다.
    - a의 1의 자리 수를 확인하고 이를 b제곱한 수의 1의 자리 수의 규칙을 파악한다.
    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]
  • a의 1의 자리수가 1, 5, 6일 때, 그를 b제곱한 수의 1의 자리수가 한 가지씩임을 알 수 있다.
  • a의 1의 자리수가 4, 9일 때,그를 b제곱한 수의 1의 자리수가 두 가지씩임을 알 수 있다.
  • a의 1의 자리수가 2, 3, 7, 8일 때, 그를 b제곱한 수의 1의 자리수가 네 가지씩임을 알 수 있다.
  • 마지막으로 a가 10의 배수면, 그를 b제곱한 수의 1의 자리수는 0이다. (-> 10번 컴퓨터)

t = int(input())
a = []
b = []

# for문으로 t만큼 돌면서 a와 b를 입력받아 리스트에 저장한다.
for _ in range(t):
    num1, num2 = map(int, input().split())
    a.append(num1)
    b.append(num2)

for i in range(t):
	# a의 1의 자리수를 com 변수에 대입
    com = a[i] % 10
    
    # a가 10의 배수면, 바로 10번 컴퓨터에 매칭
    if com == 0:
        print(10)
    # a의 1의 자리수가 1, 5, 6이면, 그대로 출력하면 됨
    elif com in [1, 5, 6]:
        print(com)
    # a의 1의 자리수가 4, 9이면, b제곱한 수의 1의 자리수가 2가지 경우가 있음
    elif com in [4, 9]:
        if b[i] % 2 == 0:
            print(com ** 2 % 10)
        else:
            print(com)
    # a의 1의 자리수가 2, 3, 7, 8이면, b제곱한 수의 1의 자리수가 4가지 경우가 있음
    else:
        if b[i] % 4 == 0:
            print(com ** 4 % 10)
        else:
            print(com ** (b[i] % 4) % 10)

0개의 댓글