next (Tin học trẻ C - Vòng Khu vực 2024)

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1800 (p) Thời gian: 1.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Với một số nguyên dương \(x\), ta gọi \(Next(x)\) là số nguyên dương nhỏ nhất lớn hơn \(x\) nhưng có cùng số lượng bit \(1\) với \(x\) khi biểu diễn trong dạng nhị phân.

Ví dụ: \(Next(1) = 2; Next(6) = 9\).

Kí hiệu: \(Next^k(x) = Next(Next(...(Next(x))))\) (có tổng cộng \(k\) lần thực hiện hàm trong dấu ..., ví dụ \(Next^3(x) = Next(Next(Next(x)))\)).

Yêu cầu: Cho số nguyên dương \(x\) (\(x \le 10^{15}\)) và số nguyên dương \(k\), hãy tìm \(Next^k(x)\), nếu giá trị này vượt quá \(10^{15}\) thì đưa ra giá trị \(-1\).

Input

  • Dòng đầu là số \(t\).
  • \(t\) dòng sau, mỗi dòng chứa hai số nguyên \(x\)\(k\).

Output

  • Gồm \(t\) dòng, mỗi dòng là kết quả tương ứng với dữ liệu vào.

Scoring

  • Subtask \(1\) (\(50\%\) số điểm): \(k \le 10^2; t \le 10\).
  • Subtask \(2\) (\(50\%\) số điểm): \(k \le 10^{15}; t \le 1000\).

Example

Test 1

Input
2
1 2
6 1
Output
4
9

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: