C++ bài 18.D3: Di chuyển trên ma trận
Đức đang đứng trên một bảng nhân có vô số hàng và cột.
Ô \((i, j)\) chứa số nguyên \(i \times j\). Ban đầu, Đức đứng tại \((1,1)\).
Trong một lần di chuyển, anh ấy có thể di chuyển từ \((i, j)\) đến \((i+1, j)\) hoặc \((i, j+1)\).
Cho một số nguyên \(N\), tìm số lần di chuyển tối thiểu cần thiết để đến một ô chứa số \(N\).
Ràng buộc
\(2 \leq N \leq 10^{12}\)
\(N\) là số nguyên.
Định dạng nhập
Dữ liệu nhập được cung cấp từ đầu vào chuẩn theo định dạng sau:
\(N\)
Định dạng xuất
In ra số lần di chuyển tối thiểu cần thiết để đến một ô chứa số nguyên \(N\).
Ví dụ:
Input
10
Output
5
Ô \((2,5)\) có thể được đạt đến trong năm lần di chuyển. Chúng ta không thể đạt đến một ô chứa \(10\) trong ít hơn năm lần di chuyển.
Input
50
Output
13
Ô \((5,10)\) có thể được đạt đến trong \(13\) lần di chuyển.
Giải thích ví dụ mẫu:
Ví dụ 1:
- Input:
10
- Giải thích: Để đến ô (2,5), cần 5 lần di chuyển: xuống 1 lần và sang phải 4 lần.
Ví dụ 2:
- Input:
50
- Giải thích: Đến ô (5,10) yêu cầu 13 lần di chuyển: xuống 4 lần và sang phải 9 lần.
Lời giải bài tập này: Tại đây
Group giải đáp thắc mắc: Lập trình 24h
Fanpage CLB: CLB lập trình Full House- Việt Nam
Youtube: CLB Lập Trình Full House
Comments