PRESENT - Quà tặng crush
Xem dạng PDFMột cửa hàng A ban đầu có M món hàng đánh số từ 1 đến M. Món hàng thứ i có giá tiền là i. Cửa hàng này có một điểm đặc biệt là không có hàng trong kho và cần mất một ngày để nhập hàng mới, tức là nếu một món hàng i được bán vào ngày hôm qua, thì đến tận ngày mai mới có thể bán tiếp món hàng giá tiền tương ứng.
Sau nhiều thời gian dành dụm, Anh đã để dành được N đồng vàng. Anh quyết định sẽ dùng N đồng vàng, mỗi ngày mua quà ở cửa hàng A tặng cho crush của mình. “Mưa dầm thấm lâu”, Anh muốn tặng quà cho crush nhiều ngày liên tục nhất có thể.
Tính số ngày liên tiếp mà Anh có thể mua quà cho crush mình.
Input
Dữ liệu bao gồm nhiều bộ test:
- Dòng đầu chứa một số nguyên T là số lượng test (1 ≤ T ≤ ~ 10^4 ~).
- T dòng tiếp theo, mỗi dòng chứa 2 số nguyên M, N (1 ≤ M ≤ N ≤ ~ 10^9 ~).
Output
Gồm T dòng, mỗi dòng chứa số nguyên là số ngày liên tục nhiều nhất mà Anh có thể mua quà tặng cho crush ứng với mỗi test case.
Sample
Input #1
3
1 1
2 2
3 3
Output #1
1
1
2
Problem source: Beginner Free Contest 31
Bình luận
Quy luật: Để tối ưu số ngày tặng quà dài nhất, ta luôn ưu tiên chọn mua xoay vòng 2 món rẻ nhất là món giá 1 và món giá 2 (tốn 3 đồng cho mỗi chu kỳ 2 ngày).
Trường hợp m = 1: Chỉ có đúng 1 món giá 1 nên không thể mua liên tục quá 1 ngày nên Kết quả luôn là 1
Trường hợp m >= 2: Chia số tiền thành các nhóm 3 đồng để lấy số ngày (ans = (n / 3) * 2), nếu còn dư tiền (n%3 >= 1) thì cộng thêm 1 ngày vì đủ mua tiếp món giá 1
code tham khảo (c++)