728x90


❌  풀이 1 (시간 초과 실패)

N = int(input())

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

 

제곱의 수가 커질수록 수가 상상 이상으로 커져 시간 초과가 나오게 된다.

 

 

 

 

🙆‍♂️  풀이 2

컴퓨터가 총 10대이고 하나하나 제곱하며 10으로 나눈것의 나머지의 규칙을 찾아보면 다음 표와 같이 나온다.

여기서 조심해야 될 부분은 끝자리가 0인 값의 제곱수들인데 0번 컴퓨터는 없으므로 해당 값들은 10번 컴퓨터가 출력되도록 코드를 짜주어야 한다.

각각의 경우를 if문을 통해 불필요한 계산을 줄여주어 시간초과를 피할 수 있었다.

 

 

풀이 코드

n = int(input())
arr = []
for i in range(n):
    arr.append(list(map(int, input().split())))
    
for i in range(len(arr)):
    a = arr[i][0] % 10
    b = arr[i][1]
    
    if a == 0:
        print(10)
    elif a == 1 or a == 5 or a == 6:
        print(a)
    elif a == 4 or a == 9:
        if b % 2 == 0:
            print((a**2) % 10)
        else:
            print(a % 10)
    elif a == 2 or a == 3 or a == 7 or a == 8:
        print((a**b) % 10)

 

 

 

 

 

 

 

 

 

 

 

 

복사했습니다!