P153PROG PTIT spoj – ROUND 3G – Chẵn lẻ

Nguồn đề bài: http://www.spoj.com/PTIT/problems/P153PROG/

1. Đề bài P153PROG PTIT spoj

Tí đang ngồi học toán nhưng thấy chán quá nên ngồi viết ra các số tự nhiên từ 1 tới n và để tăng phần thú vị, đầu tiên, Tí viết các số lẻ trong n số theo thứ tự tăng dần từ trái qua phải ra trước rồi viết tất cả các số chẵn cũng theo thứ tự tăng dần ra sau.

Sau đó Tí đố tèo biết được giá trị của số thứ k trong dãy số mà Tí vừa viết. Tèo bí quá đành nhờ các bạn giúp vậy.

Input

Một dòng duy nhất chứa 2 số nguyên n và k (1 <= k <= n <= 10^12).

Output

Giá trị của số thứ k.

Example

Test 1:

Input:

10 3

Output:

5

Test 2:

Input:

7 7

Output:

6

2. Hướng dẫn P153PROG PTIT spoj

– đếm số lượng số chẳn và số lượng số lẻ trong đoạn [1..n].

– dễ dàng tìm được trường hợp sau:

nếu K>số lượng số lẻ thì kết quả sẽ là một số chẳn và số đó là ”  |số lượng số lẻ – K|*2 “.

trường hợp ngược lại thì kết quả sẽ là một số lẻ, dễ dàng tìm được công thức “ k*2 – 1

3. code tham khảo P153PROG PTIT spoj

const   fi='';
var
        f:text;
        K,N,slchan,slle:int64;

begin
        assign(f,fi); reset(f);
        readln(f,n,k);
        close(f);
        if n mod 2=0 then
                begin
                        slle:=n div 2;
                        slchan:=n div 2;
                end
        else
                begin
                        slle:=n div 2 +1;
                        slchan:=n div 2;
                end;
        if k>slle then
                writeln(abs(slle-k)*2)
        else
                writeln(k*2-1);
end.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *