canuc80k0512·13/50

Phần Tử Thứ K Ngoài Các Bội

Nộp bài trên LQDOJ

Bài 05 · Binary Search

Xét dãy tăng gồm tất cả số nguyên dương không chia hết cho . Với mỗi bộ test, hãy tìm phần tử thứ của dãy này, đánh số từ .

Input

  • Dòng đầu chứa số nguyên - số bộ test.
  • dòng tiếp theo, mỗi dòng chứa hai số nguyên và .

Output

  • Với mỗi bộ test, in số nguyên dương thứ không chia hết cho trên một dòng.

Constraints

  • .
  • .
  • .

Scoring

  • Subtask ( điểm): .
  • Subtask ( điểm): không có giới hạn bổ sung.

Example

Test 1

Input

4
4 8
2 6
5 1
100 105

Output

10
11
1
106

Giải thích: Khi , tám số đầu tiên hợp lệ là . Với , trong các số từ đến chỉ có bị loại, nên là phần tử hợp lệ thứ .

Lời giải tóm tắt
  • Ý tưởng: Trong đoạn 1..x có floor(x/n) bội của n, nên số phần tử hợp lệ là x-floor(x/n). Đại lượng này không giảm theo x; đáp án là x nhỏ nhất làm số lượng đạt ít nhất k.
  • Ý tưởng: Ta chặt nhị phân trên [1,2k]. Cận phải luôn đủ vì trường hợp loại nhiều nhất là n=2, khi trong 2k số vẫn có đúng k số lẻ.
  • Ý tưởng: Tính đúng đắn: tại đáp án, đoạn 1..x chứa ít nhất k phần tử hợp lệ, còn 1..x-1 chứa ít hơn k. Do đó chính x là phần tử hợp lệ thứ k.
  • Ý tưởng: Độ phức tạp O(log k) mỗi bộ test và O(1) bộ nhớ.