30 lines
809 B
Python
30 lines
809 B
Python
from collections import deque
|
|
|
|
n, K = map(int, input().split())
|
|
max_val = 100001 # 문제 범위: 0 ≤ 위치 ≤ 100000
|
|
|
|
# 각 위치에 도달하는 최소 시간 (방문하지 않은 경우 -1)
|
|
dist = [-1] * max_val
|
|
# 각 위치에 도달하는 방법의 수
|
|
ways = [0] * max_val
|
|
|
|
q = deque([n])
|
|
dist[n] = 0
|
|
ways[n] = 1
|
|
|
|
while q:
|
|
cur = q.popleft()
|
|
for next in (cur - 1, cur + 1, cur * 2):
|
|
if 0 <= next < max_val:
|
|
# 아직 방문하지 않은 경우
|
|
if dist[next] == -1:
|
|
dist[next] = dist[cur] + 1
|
|
ways[next] = ways[cur]
|
|
q.append(next)
|
|
# 동일한 최소 시간으로 도달하는 경우
|
|
elif dist[next] == dist[cur] + 1:
|
|
ways[next] += ways[cur]
|
|
|
|
print(dist[K])
|
|
print(ways[K])
|