[백준 1009] 분산처리

코뉴·2022년 1월 28일
0

백준🍳

목록 보기
85/149
post-custom-banner

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

🥚문제


🥚입력/출력


🍳코드

import sys
input = sys.stdin.readline


def last_computer(a, b):
    # a가 10의 제곱수이면 10 바로 리턴
    if a % 10 == 0:
        return 10
	
    # 모든 자연수에 대해,
    # 어떤 수 a를 b제곱했을 때의 1의 자리 숫자는
    # 어떤 수 a를 b%4 제곱했을 때의 1의 자리 숫자와 같다
    b = b % 4
    if b == 0:
        return (a ** 4) % 10
    return (a ** b) % 10


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

🧂아이디어

구현

  • 단순히 a**b%10을 하면 시간초과 (b <= 1,000,000)
  • 1에서 10까지의 자연수를 제곱했을 때 일의자리 숫자의 규칙성을 생각해보면 쉽게 풀 수 있다.
    • 1을 제곱했을 때, 일의자리 숫자는
      • 1, 1, 1, 1, ... 반복
    • 2를 제곱했을 때, 일의자리 숫자는
      • 2, 4, 8, 6, ... 반복
    • 3을 제곱했을 때, 일의자리 숫자는
      • 3, 9, 7, 1, ... 반복
    • 4를 제곱했을 때, 일의자리 숫자는
      • 4, 6, 4, 6, ... 반복
    • 5를 제곱했을 때, 일의자리 숫자는
      • 5, 5, 5, 5, ... 반복
    • 6을 제곱했을 때, 일의자리 숫자는
      • 6, 6, 6, 6, ... 반복
    • 7을 제곱했을 때, 일의자리 숫자는
      • 7, 9, 3, 1, ... 반복
    • 8을 제곱했을 때, 일의자리 숫자는
      • 8, 4, 2, 6, ... 반복
    • 9를 제곱했을 때, 일의자리 숫자는
      • 9, 1, 9, 1, ... 반복
    • 10을 제곱했을 때, 일의자리 숫자는
      • 0, 0, 0, 0, ... 반복
  • 어떤 수 a를 b제곱했을 때의 1의 자리 숫자는 어떤 수 a를 b%4 제곱했을 때의 1의 자리 숫자와 같다
    • 단, (b%4 == 0일 때는 a를 4제곱했을 때로 본다)
  • (사소한 주의점?)
    • 0을 return하지 않도록 한다. (0번째 컴퓨터는 없음) 10을 return해줘야 한다! 따라서 a가 10으로 나누어떨어지면 무조건 10을 return해주도록 코드를 짰다.
profile
코뉴의 도딩기록
post-custom-banner

0개의 댓글