Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 10833
- 공주대 정보보호
- Best of the Best
- 2476
- 영재교육원
- 11109
- acmicpc
- 5586
- 5086
- 차세대 보안 리더 양성
- 2965
- EOF
- BoB 7기
- BoB 후기
- text
- 정보보호 영재원
- 1547
- 리뷰
- 10995
- 2605
- 2501
- 4101
- boj
- 정보보호 영재교육원
- 차세대 보안 리더 양성 프로그램
- 11943
- 2506
- 영재원
- Python
- BOB
Archives
- Today
- Total
짱해커가 되어보자
boj 1009 본문
문제
문제 제목은 분산처리로 컴퓨터 10개가 주어진만큼 작업을 수행한다면, 마지막 작업은 몇번째 컴퓨터가 수행하는가? 라는 질문에 대한 답을 T 횟수 만큼 반복해주면 된다.
컴퓨터의 번호는 1번 ~ 10번 까지 있다. 입력받은 횟수(T) 마다 a와 b를 입력받아 a^b 만큼 연산을 수행 한 후 최종 번호를 출력하면 된다
a : N(1 ~ 100)
b : N(1 ~ 1,000,000)
입력
: T, a, b출력
: N(1~10)
풀이
문제에 주어진 1초라는 제한을 보았을 때 단순 연산으로는 제한이 걸릴 것 같았다
제곱 연산을 수행한 후 마지막 1의 자리의 숫자만 확인하므로 a의 1~10까지 b를 반복하며 규칙성을 확인해보았다
- 1 ^ N = 1
- 2 ^ N = 2, 4, 8, 6 ...
- 3 ^ N = 3, 9, 7, 1 ...
- 4 ^ N = 4, 6 ...
- 5 ^ N = 5
- 6 ^ N = 6
- 7 ^ N = 7, 9, 3, 1 ...
- 8 ^ N = 8, 4, 2, 6 ...
- 9 ^ N = 9, 1 ...
- 10 ^ N = 0
0~9까지만 알게 되면, 이후는 반복적인 규칙이라는 것을 알 수 있었다
이를 가지고 해당 범위에서만 규칙성을 알려주는 리스트를 만들어 문제를 해결할 수 있었다
* 마지막 자리가 0의 경우는 문제의 출력에 맞추어 10을 출력하도록 해두었다
l = [[10], [1], [2,4,8,6], [3,9,7,1], [4,6], [5], [6], [7,9,3,1], [8,4,2,6], [9,1]]
for _ in range(int(input())):
a, b = map(int, input().split())
a %= 10
print(l[a][(b-1) % len(l[a])])
Comments