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])
'알고리즘 공부 > 구현' 카테고리의 다른 글
[백준/구현] 2004번: 조합 0의 개수 (0) | 2022.10.30 |
---|---|
[백준/구현] 2522번: 별 찍기 - 12 (0) | 2022.10.30 |
[백준/구현] 1224번: 스위치 켜고 끄기 (0) | 2022.10.23 |
[백준/구현] 1924번: 2007년 (0) | 2022.10.23 |
[백준/구현] 2108번: 통계학 (0) | 2022.10.23 |