[Buổi 8][Củng cố hàm][RDD] Bài 10: Di chuyển trên ma trận


LÀM BÀI

Points: 25
Time limit: 1.0s
Memory limit: 20M

Author:
Problem types
Allowed languages
C++

Di chuyển trên ma trận

Bối cảnh

Đức đang đứng trên một bảng nhân có vô số hàng và cột.

Yêu cầu

Ô \((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\).

Input

Dữ liệu nhập được cung cấp từ đầu vào chuẩn theo định dạng sau:

\(N\)

Output

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\).

Ràng buộc

\(2 \leq N \leq 10^{12}\)

\(N\) là số nguyên.

Ví dụ 1

Input

10

Output

5

Giải thích ví dụ

Ô \((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.

Ví dụ 2

Input

50

Output

13

Giải thích ví dụ

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.

Ô \((5,10)\) có thể được đạt đến trong \(13\) lần di chuyển.

Thông tin học tập

  • Buổi: B08
  • Concepts: number theory, divisors, traversal up to sqrt(N)
  • Giới hạn kiến thức: B01-B08
  • Time limit: 1 second
  • Memory limit: 20 MB
  • Point: 25

Comments

There are no comments at the moment.

Zalo