[python] 백준 1009번 제곱수의 끝자리수 찾기 (시간초과)

도리·2025년 3월 6일

문제

내 코드

T = int(input())
# 곱했을때 마지막 수 구하기?
 # 3 9 7 1
    # 6 6 6 6
      # 7 9 3 1
        # 9 8 7 6 ...
num = 1
for i in range(T):
    a,b = map(int,input().split())
    for j in range(1,b+1):
        num = num * a
        num = int(str(num)[-1])
    print(num)

시간초과이다. O(Txb)만큼 . . 그리고 약간 뻘짓(?)한듯 ㅜ.ㅜ

다른분 코드

  • 일의자리 수가 반복되는 것을 이용한다.


출처 : https://uni2237.tistory.com/58

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


    if a == 0:
        print(10)
    elif a in [1,5,6]:
        print(a)
    elif a in [4,9]:
        b = b % 2
        if b == 1:
            print(a)
        else:
            print((a * a) % 10)
    else:
        b = b % 4
        if b == 0:
            print((a**4) % 10 % 10 % 10)
        else:
            print((a**b) % 10 % 10 % 10)
  • 최소한 계산할수 있도록 코드짜기..
  • 반복되는게 있으면 미리 계산하고 사용하자.
profile
인공지능응용학과 졸업

0개의 댓글