(lattrang.*)
Một quyển sách gồm \(n\) trang (\(n\) luôn là số chẵn), được đánh số từ 1 đến \(n\). Trong đó trang 1 luôn nằm phía bên phải của trang bào đầu, trang \(n\) luôn nằm ở mặt bên trái của trang bào cuối của quyền sách
Hôm nay, giáo viên yêu cầu cả lớp lật đến trang \(p\) trong quyển sách, theo tiêu chí sau:
Có thể bắt đầu lật từ trang 1 hoặc trang \(n\).
Mỗi lần chỉ lật một trang.
Ví dụ: Bắt đầu từ trang 1 sau khi lật lần một sẽ đến tragn 2, 3; lần hai sẽ đến trang 4, 5…Tương tự như vậy, nếu bắt đầu từ trang \(n\) sẽ dẫn đến các trang \(n - 1,\ n - 2\),..
Số lần lạt đến trang \(p\) là ít nhất.
Yêu cầu: Viết chương trình trả về kết quả là số lần lật đến trang \(p\ (1 < p < n)\) trong quyển sách thỏa tiêu chí trên.
Dữ liệu vào:
+ Hai số nguyên dương \(n\) và p\(\ (n\ \leq \ 10^{18})\) nằm trên một dòng.
Kết quả:
+ Ghi một số nguyên là kết quả bài toán.
Ví dụ:
Input | Output |
---|---|
8 3 | 1 |
Giải thích: Với \(n = 8,\ p = 3\) có hai cách lật:
Cách 1: Nếu bắt đầu từ trang 1, sau 1 lần lật sẽ đến trang 2, 3
Cách 2: Nếu bắt đầu từ trang 8:
Lần lật 1: sẽ đến trang 7, 6
Lần lật 2: sẽ đến trang 5, 4
Lần lật 3: sẽ đến trang 3, 2
Như vậy cách 1 thảo mãn tiêu chí
Ràng buộc:
+ 75% test ứng với \(1 < p \leq n \leq 10^{9}\)
+ 25% test ứng với \(10^{9} < p < n \leq 10^{18}\)
Code tích cực |
---|
Trong 24h |
Trong 7 ngày |
|
Trong 30 ngày |
|
Thống kê |
---|
AC/Sub: 97887/180710 Pascal: 17121 C++: 130348 Python: 33199 Lượt xem/tải tests: 38905 |