본문 바로가기
Algorithm

[구현/수학] 백준 1009 분산처리 - Python

by jangThang 2022. 2. 25.
반응형

백준 온라인 저지

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    1009번: 분산처리

    입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다. (1 ≤ a < 100, 1 ≤ b < 1,000,000)

    www.acmicpc.net

     

     

     

    2. 문제 풀이

     10개의 컴퓨터에서 데이터를 분산처리합니다. a^b번째 데이터는 몇 번째 컴퓨터에서 처리하는지 구해야 합니다.

     

    2022.01.19 - [Algorithm] - [Algorithm] 단골 1번 문제, 구현 / 수학

     

    [Algorithm] 단골 1번 문제, 구현 / 수학

    [ Contents ] 1. 구현  단순히 '구현'만 하면 되는 문제 유형입니다. 문제를 이해하고 입력에 맞춰 적절한 출력만 하면 됩니다. 특별한 알고리즘이나 프로그래밍적 기법 없이, 단순 제어문만 사용하

    star7sss.tistory.com

     

     

     

    3. 코드

    import sys
    input = sys.stdin.readline
    
    T = int(input())
    for _ in range(T):
        a, b = map(int, input().split()) #데이터의 개수는 a^b
        print(a**b % 10)

     단순히 나머지를 구하면 시간초과가 납니다....

     그 대신 1의 자리를 거듭제곱했을 때, 나올 수 있는 패턴을 찾아야 합니다.

     

     

    import sys
    input = sys.stdin.readline
    
    T = int(input())
    for _ in range(T):
        a, b = map(int, input().split()) #데이터의 개수는 a^b
        a1 = a % 10
    
        if a1 == 0:  # 패턴 1개
            print(10)
        elif a1 in [1, 5, 6]:
            print(a1)
        elif a1 in [4, 9]:  # 패턴 2개
            b1 = b % 2
            if b1 == 0:
                print(a1 * a1 % 10)
            else:
                print(a1)
        else:  # 패턴 4개
            b1 = b % 4
            if b1 == 0:
                print(a1 ** 4 % 10)
            else:
                print(a1 ** b1 % 10)

     코드는 위와 같습니다.

     패턴을 너무 잘 소개해주신 분이 계셔서 링크로 남깁니다.

    https://uni2237.tistory.com/58

     

    star가 되고나서 Tistory

    반응형

    댓글