01/10/2018, 12:02

Bài toán chó gà

ai giúp e mbafi dân gian này với :((,em nghĩ mãi
“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”
Từ bài toán dân gian trên, mở rộng thành chương trình nhận đầu vào là tổng số con và tổng số chân của gà và chó.
Nếu tìm được số phù hợp, in ra số lượng gà và số lượng chó. Ngược lại, in ra “invalid”

HelloWorld viết 14:07 ngày 01/10/2018

đưa bài toán về dạng toán với rạng buộc hệ phương trình, rồi dùng vòng lặp duyệt thôi, dùng nhánh cận thì sẽ tối ưu vòng lặp được 1 chút

2D_team_free_online_Education viết 14:15 ngày 01/10/2018

xét miền giá trị của 2 biến xong chạy vòng lặp thôi , 2 vòng for lồng nhau , sau đó sử dụng câu lệnh if, in ra là được

Lê Quốc Khánh viết 14:17 ngày 01/10/2018

nhân tiện cho mình hỏi vòng for chính xác cách nó vận hàng như nào thế??mình vẫn ko hiểu lắm @@

Nguyễn Duy Hùng viết 14:08 ngày 01/10/2018

vậy hiện tại bạn đang hiểu nó vận hành thế nào ?

Lê Quốc Khánh viết 14:03 ngày 01/10/2018

hình như nó lặp lại điều kiện đến khi ko đúng thì thôi,với cả vòng for lồng thì ko hiểu nó chạy như nào @@,có ctrinh đơn giản này mà e còn ko hiểu sao nó chạy từ 65 mà ko phải 0 @@
#include
#include
using namespace std;
int main()
{

for(int b=0;b<=360;b++)
{
    cout<<b<<" "<<endl;}

}

Vô Thin viết 14:18 ngày 01/10/2018

hình như nó lặp lại điều kiện đến khi ko đúng thì thôi,với cả vòng for lồng thì ko hiểu nó chạy như nào @@,có ctrinh đơn giản này mà e còn ko hiểu sao nó chạy từ 65 mà ko phải 0 @@

Nghiêm túc tí đi bạn. Trao đổi để học chứ có phải đùa ở đâu, con số 65 bạn nêu ra là ở đâu đó?

Bài toán gà chó, ban đầu có thể bạn chưa viết được cho hay để nó tối ưu, nhưng cách thô thiển nhất bạn sẽ phải có cách giải dễ hình dung như sau:

  • Tối đa có 36 con, như vậy ta sẽ lặp từ 1 đến 36.
  • Khả năng sẽ có ít nhất 1 con gà hoặc 1 con chó, không có trường hợp nào 0 con gà, 0 con chó, vì nếu bài toán mà có vậy thì người ta đã biết đáp án từ lâu, loại bỏ luôn phương án có chó/ gà bằng 0 ra khỏi để xử lý cho gọn nhẹ. Vậy, vòng lặp ta bớt đi 1 lần lặp, còn 35.
  • Sẽ có hai vòng lặp lồng nhau, căn cứ trên số chân gà và số chân chó, nếu khớp 100, tổng ga + cho = 36 thì ta in kết quả ra, còn không thì “chạy xe không” qua đó (sau này tối ưu code thì đúng đáp án là break). Cụ thể đoạn code:

Đoạn code trên mình viết mà chưa được test, hồi giờ không biết gì về ngôn ngữ lập trình C/C++, hoàn toàn tra tài liệu và viết dựa trên hiểu biết về PHP. Hy vọng đoạn code trên ai đó cho chạy thử và chạy được, nếu hem chạy được báo giúp, xin đừng chém mình.

Mở rộng bài toán ra nhập tổng số gà và chó, chủ topic tự làm dựa trên bài toán trên, khai báo thêm biến tong_chan và biến tong_ga_cho cho phép người dùng nhập liệu bằng cint, để rồi “cài cắm” (thay thế) vào chỗ 35 và 100 trong đoạn code trên là xong.

Ngoc Vo viết 14:03 ngày 01/10/2018

bài này áp công thức vô là ra mà đâu cần tìm gì đâu?
2x+4y = T
x+y = N
=>
x = (4*N -T)/2
y=N-x

Lê Quốc Khánh viết 14:11 ngày 01/10/2018

iểu sao nó

e hoàn toàn nghiêm túc,thử chạy nó chỉ chạy từ 65
int main()
{
for(int b=0;b<=360;b++)
{
cout<<b<<" "<<endl;}

}

rogp10 viết 14:13 ngày 01/10/2018
for(int b=0;b&lt;=360;b++)
{
    cout&lt;&lt;b&lt;&lt;" "&lt;&lt;endl;
}

Redirect nó ra file xem.

HK boy viết 14:13 ngày 01/10/2018

Bạn chạy trên cmd à? Nếu đúng là như vậy thì nó chỉ hiện ra vài dòng gần nhất thôi.

Nói luôn, bạn biết hệ giải phương trình bậc 2 không? Bài này chỉ là giải hệ phương trình thôi.

Lê Quốc Khánh viết 14:16 ngày 01/10/2018

ko,m chạy trên codeblock

HK boy viết 14:03 ngày 01/10/2018

Console của codeblocks cũng giới hạn số dòng mà.

Vũ Thanh viết 14:17 ngày 01/10/2018

22 gà + 14 chó easy

vtrnnhlinh viết 14:14 ngày 01/10/2018

Em mới code thử, mọi người xem sao

#include <iostream>
using namespace std;

int main() {
    int dog, chicken;
    int sum, sumFeet;
    
    cout << "Please input the number of dog and chicken" << endl;
    cin >> sum;
    cout << "\nPlease input the sum of feet" << endl; 
    cin >> sumFeet;
    dog = (sumFeet-2*sum)/2;
    chicken = sum-dog;
    if (dog > 0 && chicken > 0) {
        cout << "The number of dog is " << dog << endl;
        cout << "The number of chicken is " << chicken << endl;
    }
    else {
        cout << "invalid" << endl;
    }
}
HK boy viết 14:11 ngày 01/10/2018

Cẩn thận trường hợp số chân là lẻ.

vtrnnhlinh viết 14:10 ngày 01/10/2018

coi trên kia kìa

Nếu tìm được số phù hợp, in ra số lượng gà và số lượng chó. Ngược lại, in ra “invalid”

ngồi rảnh rang không biết code gì mới hợp trình, thấy nên bỏ tí thời gian làm thử, vui quá, ít nhất còn thấy được mình còn có khả năng làm một tí

PS: áp dụng cho chó và gà thôi mà, còn nếu là con khác thì phải thêm biến là số chân nữa :))

HK boy viết 14:06 ngày 01/10/2018

Ý anh nói là cái sumFeet kia kìa, thằng nào nghịch ngu nhập số lẻ vào thì sao

vtrnnhlinh viết 14:16 ngày 01/10/2018

thì chắc được nửa con cái đó ghi thêm một cái if-else, nếu %2=1 thì break là xong :)) mà thôi, làm biếng, để anh thớt tự tùy chỉnh :V

Lê Quốc Khánh viết 14:19 ngày 01/10/2018

hix,nếu dùng for thì như nào thế bạn???

HK boy viết 14:12 ngày 01/10/2018

Việc chặn khoảng 2 nghiệm rồi dùng vòng for x, y (2 nghiệm) trong 2 khoảng đó để mò được nghiệm rất dễ làm, đúng không?

Bài liên quan
0