LẬT TRANG

(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}\)

Bạn cần đăng nhập để nộp bài

hpcode.edu.vn
Code tích cực
Trong 24h
  1. nakato (9/16)
  2. tribinh (6/9)
  3. sythai (4/4)
Trong 7 ngày
  1. bao_khanh (61/90)
  2. nakato (49/122)
  3. phamnhi (23/94)
Trong 30 ngày
  1. phamnhi (74/259)
  2. kiennhientv (72/163)
  3. npk1605 (68/96)
Thống kê
AC/Sub: 97887/180710
Pascal: 17121
C++: 130348
Python: 33199
Lượt xem/tải tests: 39169

Lưu Hải Phong - 2020
[email protected]