Cho đoạn chương trình sau:
int traudung,traunam,traugia,pa = 0;
for (traudung = 1; traudung <= 8; traudung++)
for (traunam = 1; traunam < 9 - traudung; traunam++)
for (traugia = 1; traugia < 9 - (traudung+traunam); traugia++)
if ((traudung * 5 + traunam * 3 + traugia) == 10) {
System.out.println(traudung + “ “ + traunam + “ “ + traugia);
pa++;
}
Đoạn chương trình trên in ra kết quả bao nhiêu?
>>=>
Trả lời:
Đáp án đúng: D
Đoạn chương trình sử dụng ba vòng lặp `for` lồng nhau để duyệt qua các giá trị có thể của `traudung`, `traunam` và `traugia`. Điều kiện `traudung <= 8`, `traunam <= 9 - traudung` và `traugia <= 9 - (traudung+traunam)` giới hạn phạm vi tìm kiếm. Bên trong vòng lặp, điều kiện `(traudung * 5 + traunam * 3 + traugia) == 10` kiểm tra xem bộ ba giá trị có thỏa mãn phương trình cho trước hay không. Nếu thỏa mãn, chương trình in ra bộ ba giá trị đó và tăng biến `pa`.
Để tìm ra đáp án, ta cần xác định có bao nhiêu bộ ba số nguyên dương (traudung, traunam, traugia) thỏa mãn đồng thời các điều kiện sau:
1. 1 <= traudung <= 8
2. 1 <= traunam <= 9 - traudung
3. 1 <= traugia <= 9 - (traudung + traunam)
4. 5 * traudung + 3 * traunam + traugia = 10
Xét các trường hợp:
* Nếu traudung = 1, ta có 3 * traunam + traugia = 5. Vì 1 <= traunam <= 8 và 1 <= traugia <= 9 - (1 + traunam) = 8 - traunam. Ta có:
* traunam = 1 => traugia = 2. Thỏa mãn.
* Nếu traudung = 2, ta có 3 * traunam + traugia = 0. Không có nghiệm thỏa mãn vì traunam và traugia đều >=1.
Vậy, chỉ có một bộ số thỏa mãn là (1, 1, 2). Chương trình sẽ in ra "1 1 2" và `pa` sẽ tăng lên 1. Giá trị cuối cùng của `pa` là 1.
Như vậy, đoạn chương trình in ra 1 kết quả duy nhất là "1 1 2".