본문 바로가기

Programming [Python]/백준 알고리즘 솔루션

#199 백준 파이썬 [1009] 분산 처리

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

 

 

 

 

#Solution

당연하지만 시간초과 코드

T = int(input())

for _ in range(T):
    a, b = map(int, input().split())
    print((a ** b) % 10)

 

분산 처리 정답 코드

컴퓨터는 10대이므로 각 수를 승수만큼 곱해서 10으로 나눈 것의 1의 자리만 출력하면 된다.

0~9까지의 답을 따로 구해주고 각 숫자가 제곱하면 끝의 자리가 어떻게 되는지만 알면 수월하게 풀 수 있다.

0 10
1 1
2 2 4 8 6
3 9 7 1
4 4 6
5 5
6 6
7 9 3 1
8 8 4 2 6
9 9 1

 

T = int(input())

for _ in range(T):
    a, b = map(int, input().split())
    a = a % 10
    
    if a == 0:
        print(10)
    elif a == 1 or a == 5 or a == 6:
        print(a)
    elif a == 4 or a == 9:
        b = b % 2
        if b == 1:
            print(a)
        else:
            print((a * a) % 10)
    else:
        b = b % 4
        if b == 0:
            print((a**4) % 10 % 10 % 10)
        else:
            print((a**b) % 10 % 10 % 10)