Câu hỏi
Chúng tôi bị quân đội robot bắt giữ trên trạm vũ trụ của họ. Phi công tàu không gian của chúng tôi đang ở trong nhà tù ở cấp 1. Chỉ có một cách để trốn thoát và đó là giải cứu phi công tàu không gian của bạn. Điều đó có nghĩa là chuyển từ cấp N sang cấp 1. Tuy nhiên, vì rất nguy hiểm, bạn cần đến nhà tù với số bước ít nhất có thể.
Điều kiện
Có 4 cách để di chuyển:
- Chuyển từ cấp N sang cấp N - 1
e.g. from 12 to 11 - Chuyển từ cấp N sang cấp N + 1
e.g. from 12 to 13 - Sử dụng dịch chuyển tức thời từ cấp 2k đến cấp k
e.g. from 12 to 6 - Sử dụng dịch chuyển tức thời từ cấp 3k đến cấp k
e.g. from 12 to 4
- Chuyển từ cấp N sang cấp N - 1
Dịch chuyển tức thời chỉ là một chiều (bạn có thể nhận được từ 12 đến 4 nhưng không thể nhận được từ 4 đến 12)
- Mỗi hành động mất một bước
Đầu vào
Đầu vào phải được đọc từ STDIN hoặc thay thế gần nhất trong ngôn ngữ lập trình của bạn. Đầu vào bao gồm một số nguyên ntrong đó 1 <= n <= 10^8.
Đầu ra
Đầu ra phải là số bước tối thiểu cần thiết để chuyển từ ncấp 1.
Ví dụ
Level Minimum number of steps
1 0
8 3
10 3
267 7
100,000,000 25
Hãy thử mã chương trình sẽ giúp chúng tôi cứu phi công tàu không gian của chúng tôi khỏi nhà tù trong thời gian ngắn nhất và trở về nhà!
Mã ngắn nhất sẽ giành chiến thắng!