티스토리 뷰
문제
재용이는 최신 컴퓨터 10대를 가지고 있다. 어느 날 재용이는 많은 데이터를 처리해야 될 일이 생겨서 각 컴퓨터에 1번부터 10번까지의 번호를 부여하고, 10대의 컴퓨터가 다음과 같은 방법으로 데이터들을 처리하기로 하였다.
1번 데이터는 1번 컴퓨터, 2번 데이터는 2번 컴퓨터, 3번 데이터는 3번 컴퓨터, ... ,
10번 데이터는 10번 컴퓨터, 11번 데이터는 1번 컴퓨터, 12번 데이터는 2번 컴퓨터, ...
총 데이터의 개수는 항상 ab개의 형태로 주어진다. 재용이는 문득 마지막 데이터가 처리될 컴퓨터의 번호가 궁금해졌다. 이를 수행해주는 프로그램을 작성하라.
입력
입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다. (1 ≤ a < 100, 1 ≤ b < 1,000,000)
출력
각 테스트 케이스에 대해 마지막 데이터가 처리되는 컴퓨터의 번호를 출력한다.
예제 입력과 출력
예제 입력 | 예제 출력 |
5 1 6 3 7 6 2 7 100 9 635 |
1 7 6 1 9 |
풀이
-
T를 먼저 입력
-
T만큼 a,b를 입력
-
(b의 범위 안에서)1과 a를 곱해주고(시간 단축을 위해 일의 자리수만 보기) 10으로 나눈 나머지 값을 리스트 안에 넣기 반복!
-
리스트 안에 값이 있을 경우 빠져나오기
-
리스트[b%len(results)-1] 출력! OR 나머지가 0인 경우 10 출력
-
5번 설명 더보기 클릭↓
5번 설명
예를 들어 a가 2일 경우 거듭제곱의 일의자리수는 [2, 4, 8, 6]가 반복된다.
다시 말하면 2와 2^5, 2^9, 2^13의 일의자리 수가 같음.
만약 b가 5일 경우 (c = b를 4(리스트의 길이)로 나눈 나머지라고 할 때) a^c와 같다.
파이썬에서 리스트에서 list[0]은 첫번째 -> 원하는 위치에서 1을 빼줌
즉!!!! 리스트[b%len(results)-1] 출력해야함!!!
코드로 짜보기 더보기 클릭↓
T=int(input())
for _ in range(T):
a,b = map(int,input().split())
x=1
results=[]
for _ in range(b):
x*=a
x%=10
if x in results:
break
results.append(x)
result=results[b%len(results)-1]
if result==0:
print(10)
else:
print(result)
- Total
- Today
- Yesterday
- 경제신문
- 보안
- 클래스
- 자바
- plot
- 코딩테스트
- 코테
- 영어회화
- 프로그래머스
- Programming
- mysql
- 코딩
- 데이터분석
- 그래프
- 데이터
- 파이썬
- python
- 함수
- 개발
- SW
- R
- 프로그래밍
- 머신러닝
- 모듈
- 금리
- 영어
- 스마트워치
- sql
- 경제
- 코드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |