C言語での鶏とウサギを同じ小屋に入れる問題はどのように解決しますか?

鶏とウサギを同じ籠に入れる問題は、古典的な数学問題であり、繰り返しと全列挙法を使って解決することができます。

一つのウサギとn匹の鶏がいるとすると、合計でx本の足がある。与えられた条件によれば、一匹の鶏は2本の足を持ち、一匹のウサギは4本の足を持つので、以下の方程式が得られる:
2n + 4m = x

この方程式に基づくと、鶏とウサギが一緒にいる問題を解決するために、繰り返しと全探索法を使用することができます。具体的な手順は次の通りです:

  1. 籠の中の足の総数xを入力してください。
  2. 鶏の数nに対して、0からx/2まで(1羽の鶏には2本の脚があるため)ループを回す。
  3. うさぎの数mについて、0からx/4まで(1匹のうさぎには4本の脚があるため)全てのパターンを試す。
  4. ループの中で、方程式2n + 4mがxと等しいかどうかを判断し、もしxと等しければ、解決策が見つかります。
  5. 鶏(にわとり)の数nとウサギの数mを出力します。

以下は、C言語で書かれたサンプルコードです。

#include <stdio.h>

int main() {
    int x;  // 总脚数
    printf("请输入笼子里的总脚数:");
    scanf("%d", &x);
    
    int n, m;
    int found = 0;  // 标记是否找到解
    
    for (n = 0; n <= x/2; n++) {
        for (m = 0; m <= x/4; m++) {
            if (2*n + 4*m == x) {
                found = 1;
                break;
            }
        }
        
        if (found) {
            break;
        }
    }
    
    if (found) {
        printf("鸡的数量:%d\n", n);
        printf("兔的数量:%d\n", m);
    } else {
        printf("无解\n");
    }
    
    return 0;
}

このコードを実行し、総足の数を入力すると、鶏とウサギの数がわかります。

bannerAds