A, B, C = map(int, input().split())

def solve(A, B):
    if(B % 2 > 0):
        return solve(A, B - 1) * A
    elif(B == 0):
        return 1
    elif(B == 1):
        return A
    else:
        # 10^11에서 11을 %2 해줄때의 경우는 홀수와 짝수로 나뉘게 된다.
        # 첫 시작부터 % 12를 붙이고 끝까지 계산을 해보면,
        # 왜 result ** 2 % C가 필요한지 알 수 있다.
        result = solve(A, B//2)
        return result ** 2 % C

# 식을 보는 도중, 여기서 왜 또 %C를 해주는지 헷갈릴 수 있는데,
# solve(A, B)는 (10, 11)의 결괏값이고,
# (10, 11) % C는 문제가 원하는 정답이다.
print(solve(A, B) % C)

result ** 2 % C를 찾느라고 시간이 좀 더 걸렸다.
(10^10%12는 10^5^2%12와 같다.)

이 문제는 코드 길이에 비해 정답률이 낮길래 구글에 검색을 좀 해보았는데, 생각보다 풀이가 다양했다.

문제를 풀고 검색을 통해 다른 방법도 접해보길 바란다.

'# 코딩 문제 관련 > 파이썬' 카테고리의 다른 글

백준 2740번(python)  (0) 2020.07.11
백준 11401번(python)  (0) 2020.06.05
백준 1780번(python)  (0) 2020.05.04
백준 1992번(python)  (0) 2020.05.04
백준 2680번(python)  (0) 2020.05.03


N = int(input())

paper = [list(map(int, input().split())) for _ in range(N)]

neg = 0
neut = 0
pos = 0

def clip_paper(x, y, n):
    global neg, neut, pos
    
    num_check = paper[x][y]
    for i in range(x, x + n):
        for j in range(y, y + n):
            if(paper[i][j] != num_check):
                for k in range(3):
                    for l in range(3):
                        clip_paper(x + k * n//3, y + l * n//3, n//3)
                return
            
    if(num_check == -1):
        neg += 1
    elif(num_check == 0):
        neut += 1
    else:
        pos += 1
        
clip_paper(0, 0, N)
print(f'{neg}\n{neut}\n{pos}')

'# 코딩 문제 관련 > 파이썬' 카테고리의 다른 글

백준 11401번(python)  (0) 2020.06.05
백준 1629번(python)  (0) 2020.05.04
백준 1992번(python)  (0) 2020.05.04
백준 2680번(python)  (0) 2020.05.03
백준 2164번(python)  (0) 2020.05.03


N = int(input())

image = [list(map(int, input())) for _ in range(N)]

def quadtree(x, y, n):
    # n = 1, 하나의 픽셀만 볼 경우,
    if(n == 1):
        return str(image[x][y])
    
    result = []
    for i in range(x, x + n):
        for j in range(y, y + n):
            # 색이 다르면, 다시 분할하자.
            if(image[i][j] != image[x][y]):
                # append와 extend의 차이는
                # extend는 list, tuple, dict 등의 iterable object를
                # python list의 끝에 append 해주는 것.
                result.append('(')
                result.extend(quadtree(x, y, n//2))
                result.extend(quadtree(x, y + n//2, n//2))
                result.extend(quadtree(x + n//2, y, n//2))
                result.extend(quadtree(x + n//2, y + n//2, n//2))
                result.append(')')
                
                return result
            
    return str(image[x][y])
    
print(''.join(quadtree(0, 0, N)))

'# 코딩 문제 관련 > 파이썬' 카테고리의 다른 글

백준 1629번(python)  (0) 2020.05.04
백준 1780번(python)  (0) 2020.05.04
백준 2680번(python)  (0) 2020.05.03
백준 2164번(python)  (0) 2020.05.03
백준 18258번(python)  (0) 2020.05.03


N = int(input())
square = [[0] * 8] * N

for i in range(N):
    row = list(map(int, input().split()))
    square[i] = row

blue = 0
white = 0

# 세로 방향 x, 가로 방향 y
# 사분면
def split(x, y, n):
    # 전역 변수
    global blue, white
    paper_check = square[x][y]
    
    for i in range(x, x + n):
        for j in range(y, y + n):
            # paper_check과 같은 숫자가 아니면, 같은 색이 아니므로
            # 분리해서 다시 판단하도록 해줍니다.
            if(paper_check != square[i][j]):
                split(x, y, n//2) # 왼쪽 위
                split(x + n//2, y, n//2), # 오른쪽 위
                split(x, y + n//2, n//2) # 왼쪽 아래
                split(x + n//2, y + n//2, n//2) # 오른쪽 아래
                return
    
    if paper_check:
        blue += 1
    else:
        white += 1

split(0, 0, N)
print(f'{white}\n{blue}')

'# 코딩 문제 관련 > 파이썬' 카테고리의 다른 글

백준 1780번(python)  (0) 2020.05.04
백준 1992번(python)  (0) 2020.05.04
백준 2164번(python)  (0) 2020.05.03
백준 18258번(python)  (0) 2020.05.03
백준 4949번(python)  (0) 2020.05.02


from collections import deque

N = int(input())
deque = deque([i for i in range(1, N + 1)])

while(not (len(deque) == 1)):
    # 버리고,
    deque.popleft()
    # 맨 앞의 숫자를 뒤로 옮기자.
    move_num = deque.popleft()
    deque.append(move_num)
    
print(deque[0])

'# 코딩 문제 관련 > 파이썬' 카테고리의 다른 글

백준 1992번(python)  (0) 2020.05.04
백준 2680번(python)  (0) 2020.05.03
백준 18258번(python)  (0) 2020.05.03
백준 4949번(python)  (0) 2020.05.02
백준 10773번(python)  (0) 2020.05.02