甲、乙、丙三位鱼夫出海打鱼,他们随船带了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;
}