Bài 04: Robot tìm đường đi (TS10 chuyên Võ Nguyên Giáp 2025 - 2026)

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1000 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: ROAD.INP Output: ROAD.OUT

Trong một cuộc thi đấu Robocon, nhiệm vụ của các đội chơi là phải lập trình để Robot di chuyển trong một lưới hình vuông được chia thành các ô vuông đơn vị. Các hàng và các cột của lưới được đánh chỉ số từ \(1, 2, 3, \dots\) Trên mỗi ô của lưới chứa một số nguyên có giá trị là tích của chỉ số hàng và chỉ số cột của ô đó, ô ở hàng \(i\) cột \(j\) thì có giá trị là \(i \cdot j\).

Vị trí xuất phát của Robot là ô \((1, 1)\). Với \(k\) là một số nguyên cho trước, nhiệm vụ của Robot là di chuyển qua từng ô để đến được ô có giá trị bằng \(k\). Có rất nhiều cách để di chuyển nhưng Robot phải chọn cách di chuyển sao cho số ô mà nó đi qua là ít nhất.

Từ ô \((i, j)\) Robot chỉ có thể di chuyển sang ô \((i, j + 1)\) hoặc ô \((i + 1, j)\).

Ví dụ với \(k = 4\), Robot có nhiều cách đi nhưng cách đi qua ít ô nhất là \(2\) ô (Hình 1), các cách còn lại là đi qua \(3\) ô (Hình 2).

Yêu cầu

Với giá trị \(k\) mà Ban giám khảo đưa ra, Robot phải tìm đường đi để đến được ô có giá trị bằng \(k\) sao cho số ô mà nó đi qua là ít nhất.

Input

  • Một dòng duy nhất chứa số nguyên dương \(k\) (\(1 < k \leq 10^{10}\)).

Output

  • Ghi một số nguyên duy nhất là số ô ít nhất mà Robot đi qua.

Example

Test 1

Input
4
Output
2

Test 2

Input
12
Output
5

Scoring

  • \(25\%\) số test tương ứng với \(25\%\) số điểm với \(k \leq 100\).
  • \(25\%\) số test tương ứng với \(25\%\) số điểm với \(100 < k \leq 10^4\).
  • \(50\%\) số test tương ứng với \(50\%\) số điểm với \(10^4 < k \leq 10^{10}\).

Bình luận (2)

Mới nhất
Tải bình luận...