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

 

1009번: 분산처리

입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다. (1 ≤ a < 100, 1 ≤ b < 1,000,000)

www.acmicpc.net

a, b가 주어졌을 때, 총 데이터의 개수는 a를 b번만큼 곱한 값입니다.

그러므로 일의 자리수는 반복되는 규칙이 생기게 됩니다.

3을 예로 들면,

3^1 = 3 => 3

3^2 = 9 => 9

3^3 = 27 => 7

3^4 = 81 => 1

3^5 = 243 => 3

와 같이 순환이 생기게 됩니다.

그래서, b만큼의 반복문으로 숫자가 언제 반복되는지 확인하고, 순환되는 리스트를 만듭니다.

그리고 리스트의 첫 index는 시작이 0이므로, 구한 값에서 1을 빼주어 처리될 컴퓨터의 번호를 구합니다.

t = int(input())

for _ in range(t):
    a,b = map(int,input().split())

    #숫자가 언제 반복되는지 확인합니다.
    l = [a%10]
    x = a
    for _ in range(b):
        x = (x*a) % 10
        if (l[0] == x):
            break
        else:
            l.append(x)
    y = b%len(l) -1 
    if(l[y]==0):
        print(10)

    else:
        print(l[y])

+ Recent posts