Bài toán chó gà

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

3 Likes

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;}

}

Redirect nó ra file xem.

2 Likes

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.

2 Likes

ko,m chạy trên codeblock

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

22 gà + 14 chó easy :smiley:

1 Like

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

#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;
    }
}
2 Likes

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

1 Like

coi trên kia kìa

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í :joy:

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 :))

2 Likes

Ý 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 :joy:

1 Like

thì chắc được nửa con :joy: 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

2 Likes

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

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?

1 Like

e làm dc rồi bác nhưng thắc mắc là in ra cái invailid như thến nào hix
code em
{
int socon,sochan;
cin>>socon>>sochan;
for(int ga=1; ga<socon&&2ga<sochan; ga++)
{
for(int cho=1; cho<socon&4
cho<sochan; cho++)
{
if(2ga+cho4==sochan&&ga+cho==socon)
{

            cout<<"chicken ="<<ga<<" "<<"dog ="<<cho;
        }
    }
}

}

Một cách giải thường quy cho bài toán này: Thuật toán vét cạn :smiley:

Xem lại chỗ này.

Nếu có kết quả thì bạn thêm return 0 ngay sau dòng cout. Cuối chương trình thêm cout << "Invalid".

2 Likes

c# nhưng em nghĩ thế này chạy hơi chậm các bác nhỉ

class Program
    {
        static void Main(string[] args)
        {
            int i = 1;// so con ga
            int j = 0;// so con cho 
            for(i=1;i<36;i++)
            {
                j = 36 - i;
                int k = 2 * i + 4 * j;
                if (k == 100)
                    break;
            }
            Console.WriteLine("so con ga la :"+i);
            Console.WriteLine("so con cho la:"+j);
            Console.ReadKey();
        }
    }
#include <iostream>
using namespace std;

bool checkvalid(int sum, int footsum);
int main()
{
    int sum = 0;
    int footsum = 0;
    cout << "Enter sum: " << '\n';
    cin>>sum;
    cout<< "Enter footsum: " << '\n';
    cin>>footsum;
    checkvalid(sum,footsum);
    return (0);
}

bool checkvalid(int sum, int footsum)
{
    int g = 0;
    int c = 0;
    int temp = (4 * sum - footsum);
    if (temp < 0 || temp % 2 != 0)
    {
        cout << "Invalid";
        return 0;
    }
    g = temp / 2;
    cout << "Dog: " << sum - g << '\n';
    cout << "Chicken: " << g << '\n';
    return 1;
}

Càch mà newb hay làm thì đúng hơn.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?