Đổi Xu

View as PDF

Submit solution

Points: 1.00 (partial)
Time limit: 1.0s
Memory limit: 256M
Input: stdin
Output: stdout

Author:
Problem type

Bessie hiện có ~A~ đồng xu loại A và ~B~ đồng xu loại B ~(0 \le A,B \le 10^9)~.

Bessie có thể thực hiện thao tác sau không giới hạn số lần:

  • Nếu có ít nhất ~c_B~ đồng xu loại B, Bessie có thể đổi ~c_B~ đồng xu loại B lấy ~c_A~ đồng xu loại A ~(1 \le c_A,c_B \le 10^9)~.

Bessie sẽ nhận thêm ~x~ đồng xu ngẫu nhiên. Mỗi đồng xu nhận thêm có thể thuộc loại A hoặc loại B.

Yêu cầu: Tìm số nguyên không âm ~x~ nhỏ nhất sao cho bất kể số xu nhận thêm được phân chia giữa hai loại A và B như thế nào, Bessie luôn có thể thực hiện các thao tác đổi xu để cuối cùng sở hữu ít nhất ~f_A~ đồng xu loại A ~(0 \le f_A \le 10^9)~.

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên ~T~ ~(1 \le T \le 10^4)~, là số bộ test.
  • Mỗi bộ test gồm một dòng chứa năm số nguyên ~A, B, c_A, c_B, f_A~.

Dữ liệu ra

Với mỗi bộ test, in ra một số nguyên ~x~ nhỏ nhất thỏa mãn yêu cầu bài toán.

Lưu ý: Kết quả có thể rất lớn, cần sử dụng kiểu số nguyên 64-bit (long long trong C++).

Ví dụ 1

Input
2
2 3 1 1 6
2 3 1 1 4
Output
1
0

Ví dụ 2

Input
5
0 0 2 3 5
0 1 2 3 5
1 0 2 3 5
10 10 2 3 5
0 0 1 1000000000 1000000000
Output
9
8
7
0
1000000000000000000
Giải thích

Test 1 của ví dụ 2:

Ban đầu Bessie không có đồng xu nào.

  • Nếu nhận thêm ~9~ đồng xu bất kỳ, Bessie luôn có thể đổi xu để sở hữu ít nhất ~5~ đồng xu loại A.
  • Ví dụ, nếu nhận được ~2~ xu A và ~7~ xu B, Bessie có thể thực hiện ~2~ lần đổi, thu được ~6~ xu A.
  • Tuy nhiên, nếu chỉ nhận thêm ~8~ xu B, Bessie chỉ có thể đổi được ~4~ xu A, không đạt yêu cầu.

Do đó, kết quả nhỏ nhất là ~x = 9~.

Test 4 của ví dụ 2:

Bessie đã có đủ số xu loại A cần thiết ngay từ đầu, nên không cần nhận thêm xu nào.

Kết quả là ~x = 0~.

Giới hạn

  • Subtask 1 (Test 3): ~c_A = c_B = 1~.
  • Subtask 2 (Test 4–5): Đáp án ~x \le 10~ với mọi bộ test.
  • Subtask 3 (Test 6–7): ~c_A = 2, c_B = 3~.
  • Subtask 4 (Test 8–12): Không có ràng buộc bổ sung.

Loading...