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. trungnam (6/7)
  2. sythai (5/8)
  3. npk1605 (5/10)
Trong 7 ngày
  1. nguyenanhvu (40/64)
  2. khieuquan (35/59)
  3. ngokhang (27/55)
Trong 30 ngày
  1. quechi (85/105)
  2. dangphong3108 (79/125)
  3. kiennhientv (79/179)
Thống kê
AC/Sub: 97887/180710
Pascal: 17121
C++: 130348
Python: 33199
Lượt xem/tải tests: 38905

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