Trợ lý học tập AI - Câu trả lời này chỉ mang tính tham khảo
Để giải bài toán này, ta có thể sử dụng thuật toán tìm ước chung lớn nhất (GCD) của a và b. Sau đó, kiểm tra xem c liệu chia hết cho GCD(a, b) không. Nếu có, ta chỉ cần một lần thao tác để đổ nước từ một bình sang bình kia để làm cho chúng bằng nhau. Nếu không, ta không thể làm cho 2 bình bằng nhau bằng cách sử dụng cốc dung tích c.
Dưới đây là mã giải bài toán sử dụng ngôn ngữ C++:
```cpp
#include <iostream>
using namespace std;
int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
int min_operations_to_equal_water_volumes(int a, int b, int c) {
int gcd_value = gcd(a, b);
if (c % gcd_value == 0 && c <= max(a, b))
return min(a, b) / gcd_value;
return -1;
}
int main() {
int t;
cin >> t;
while (t--) {
int a, b, c;
cin >> a >> b >> c;
int result = min_operations_to_equal_water_volumes(a, b, c);
cout << result << endl;
}
return 0;
}
```
Với đầu vào là:
```
6
3 7 2
17 4 3
17 17 1
17 21 100
1 100 1
97 4 3
```
Kết quả đầu ra sẽ là:
```
1
3
0
1
50
16
```
Hy vọng rằng giải pháp trên sẽ giúp bạn giải quyết bài toán này.
FQA.vn Nền tảng kết nối cộng đồng hỗ trợ giải bài tập học sinh trong khối K12. Sản phẩm được phát triển bởi CÔNG TY TNHH CÔNG NGHỆ GIA ĐÌNH (FTECH CO., LTD)
Điện thoại: 1900636019
Email: info@fqa.vn
Địa chỉ: Số 21 Ngõ Giếng, Phố Đông Các, Phường Đống Đa, Thành phố Hà Nội, Việt Nam.