trang chủ / đề bài / gr05_jugs

Hai bình nước

Đề bài

Mô tả

Có hai bình rỗng, bình thứ nhất chứa được tối đa A lít, bình thứ hai chứa được tối đa B lít, và một vòi nước không giới hạn. Mỗi thao tác là một trong các việc sau:

  • đổ đầy một bình từ vòi;
  • đổ hết nước trong một bình đi;
  • rót nước từ bình này sang bình kia cho đến khi bình rót cạn hoặc bình nhận đầy.

Bình không có vạch chia, nên chỉ thực hiện được đúng các thao tác trên. Hãy tìm số thao tác ít nhất để một trong hai bình chứa đúng t lít, hoặc in −1 nếu không làm được.

Mỗi tệp dữ liệu gồm nhiều bộ test độc lập.

Dữ liệu vào

  • Dòng đầu chứa số bộ test T.
  • Mỗi bộ test gồm một dòng chứa ba số nguyên A,B,t.

Dữ liệu ra

Với mỗi bộ test, in một số nguyên trên một dòng: số thao tác ít nhất, hoặc −1.

Ràng buộc

  • 1≤T≤104
  • 1≤A,B và 1≤t≤max(A,B)
  • Tổng A+B trên mọi bộ test không vượt quá 105

Ví dụ

Input Output Giải thích
3
3 5 4
2 4 3
7 7 7
6
-1
1
Bộ 1: đổ đầy bình 5 lít, rót sang bình 3 lít (còn 2), đổ hết bình 3 lít, rót 2 lít sang, đổ đầy bình 5 lít, rót sang cho đầy bình 3 lít: bình 5 lít còn 4. Bộ 2: lượng nước trong mỗi bình luôn chẵn. Bộ 3: đổ đầy một bình.
2
4 9 6
6 10 8
8
6
Bộ 1: (0,9)→(4,5)→(0,5)→(4,1)→(0,1)→(1,0)→(1,9)→(4,6). Bộ 2: (0,10)→(6,4)→(0,4)→(4,0)→(4,10)→(6,8).

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0