Lời giải
Đề bài: Viết chương trình giải bài toán sau:
- Vừa gà vừa chó.
- Bó lại cho tròn.
- Ba mươi sáu con,
- Một trăm chân chẵn.
- Hỏi có bao nhiêu con mỗi loại?
Lời giải 1
sửa#include <iostream>
using namespace std;
int main () {
int ga, cho;
for (cho = 1 ; cho < 36 ; cho++) {
ga = 36 - cho;
if (ga*2 + cho*4 == 100) {
cout << "So ga = " << ga << endl;
cout << "So cho = " << cho << endl;
}
}
return 0;
}
Lời giải 2
sửaSử dụng duy nhất biến i biểu thị số lượng con gà:
#include <iostream>
using namespace std;
int main () {
for (int i = 1 ; i < 36 ; i++)
if (4*(36-i) + 2*i == 100) {
cout << "So ga = " << i << endl;
cout << "So cho = " << 36 - i << endl;
}
return 0;
}
Cũng là sử dụng duy nhất biến i, nhưng biểu thị số chó thay vì số gà:
#include <iostream>
using namespace std;
int main () {
for (int i = 1 ; i < 25 ; i++)
if (4*i + 2*(36-i) == 100) {
cout << "So ga = " << 36 - i << endl;
cout << "So cho = " << i << endl;
}
return 0;
}
Hai lời giải này về cơ bản không khác gì nhau, tuy nhiên có đôi chút khác ở điều kiện dừng vòng lặp (dòng 5). Ở lời giải trên, ta cho kiểm tra số lượng gà từ 1 đến 35. Ở lời giải dưới, ta kiểm tra số lượng chó từ 1 đến 24 thì dừng. Tại sao chỉ chạy đến 24 mà không chạy đến 35 như số gà? Với tổng số chân của cả 2 loài bằng 100, ta có thể thấy số lượng chó nhiều nhất chỉ có thể là 24. Điều này giúp tối ưu vòng lặp hơn 1 chút, tuy nhiên bạn vẫn có thể cho số lượng chó chạy từ 1 đến 35.