Trăm trâu trăm cỏ là một bài toán cổ điển dân gian rất hay, hôm nay chúng ta sẽ cùng nhau đi giải bài toán Trăm trâu trăm cỏ trong c++ nhé.
Đầu bài toán cổ điển Trăm trâu Trăm cỏ
Trăm trâu, trăm cỏ
Trâu đứng ăn năm
Trâu nằm ăn ba,
Ba trâu già ăn một
Hỏi mỗi loại trâu có bao nhiêu con.
Ý tưởng thuật toán
Chúng ta có 100 con trâu với 100 bó cỏ, và bây giờ chúng ta phải chia cỏ cho nó ăn :))
Giả sử ta tách riêng từng loại trâu là: trâu đừng, trâu nằm và trâu già.
Trâu đứng ăn năm: 1 con trâu ăn hết 5 bó cỏ, vậy 100 bó cỏ thì chia cho được 20 con trâu đứng.
Trâu nằm ăn ba: 1 con trâu nằm ăn hết 3 bó, vậy 100 bó chia gần hết cho 33 con trâu.
Ba trâu già ăn một: 3 con trâu ăn 1 bó cỏ, vậy giới hạn sẽ là nhỏ hơn hoặc bằng 100 con trâu già để ăn hết 100 bó cỏ.
Code Trăm trâu trăm cỏ C++
#include <iostream> #include <math.h> using namespace std; int main() { for(int x=1; x<=20; x++) for (int y=1;y<=33;y++) for (int z=3;z<=100;z++) if ( (x+y+z==100) && (x*5+y*3+z/3==100) ) { cout<<"Trau dung "<<x<<" "; cout<<"Trau nam "<<y<<" "; cout<<"Trau gia "<<z<<endl; } }
Kết quả sau khi chạy chương trình:
Trau dung 3 Trau nam 20 Trau gia 77
Trau dung 4 Trau nam 18 Trau gia 78
Trau dung 7 Trau nam 13 Trau gia 80
Trau dung 8 Trau nam 11 Trau gia 81
Trau dung 11 Trau nam 6 Trau gia 83
Trau dung 12 Trau nam 4 Trau gia 84
x+y+z==100 để giới hạn Trâu đứng (x) + Trâu già (y) + Trâu nằm (z) = 100 con trâu
Đến lượt bạn
Bạn đã hiểu bài toán Trăm trâu trăm cỏ C++ chưa?
Có thắc mắc gì thì bạn hãy để lại bình luận phía bên dưới phần comment nhé.