分鱼问题

甲、乙、丙三位鱼夫出海打鱼,他们随船带了21只箩筐。当晚返航时,他们发现有七筐装满了鱼,还有七筐装了半筐鱼,另外七筐则是空的,由于他们没有秤,只好通过目测认为七个满筐鱼的重量是相等的,7个半筐鱼的重量是相等的。在不将鱼倒出来的前提下,怎样将鱼和筐平分为三份?

#include<stdio.h>

void divide()

{

    int i,j,k,cnt=0;

    for(i=0;i<=7;i++)

    {

        for(j=0;j<=7;j++)

        {

            for(k=0;k<=7;k++)

            {

                if(i+j+k==7&&21-2*i-2*j-2*k==7&&7-2*i>=0&&7-2*j>=0&&7-2*k>=0)

                {

                     cnt++;

                     printf("No.%d Full basket Semi--basket Empty ",cnt);

                     printf("fisherA:%d %d %d ",i,7-2*i,i);

                     printf("fisherB:%d %d %d ",j,7-2*j,j);

                     printf("fisherC%d %d %d ",k,7-2*k,k);

                }

            }

        }

    }

}

int main()

{

   divide();

    return 0;

}

* 运行结果

It exists possible distribution plans:

No.1 Full basket Semi--basket Empty

fisher A: 1 5 1

fisher B: 3 1 3

fisher C: 3 1 3

No.2 Full basket Semi--basket Empty

fisher A: 2 3 2

fisher B: 2 3 2

fisher C: 3 1 3

*思考题

晏会上数学家出了一道难题:假定桌子上有三瓶啤酒,癣瓶子中的酒分给几个人喝,但喝各瓶酒的人数是不一样的。不过其中有一个人喝了每一瓶中的酒,且加起来刚好是一瓶,请问喝这三瓶酒的各有多少人?

(答案:喝三瓶酒的人数分别是2人、3人和6人)

#include<stdio.h>

void divide()

{

    int i,j,k;

    for(i=0;i<=10;i++)

    {

        for(j=0;j<=10;j++)

        {

            for(k=0;k<=10;k++)

            {

                if(j*k+i*k+i*j==i*j*k&&i!=0&&j!=0&&k!=0&&i!=j&&j!=k&&i!=k)

                {

                     printf("分别喝三瓶酒的人数:%d %d %d ",i,j,k);

                }

            }

        }

    }

}

int main()

{

   divide();

    return 0;

}

原文地址:https://www.cnblogs.com/eastofeden/p/7375951.html