發布時間:2011-09-16 共1頁
馬克思手稿中有一道趣味數學問題:有30個人,其中有男人、女人和小孩,在一家飯館吃飯花了50先令;每個男人花3先令,每個女人花2先令,每個小孩花1先令;問男人、女人和小孩各有幾人?
*問題分析與算法設計
設x,y,z分別代表男人、女人和小孩。按題目的要求,可得到下面的方程:
x+y+z=30 (1)
3x+2y+z=50 (2)
用方程程序求此不定方程的非負整數解,可先通過(2)-(1)式得:
2x+y=20 (3)
由(3)式可知,x變化范圍是0~10
*程序說明與注釋
#include<stdio.h>
int main()
{
int x,y,z,count=0;
printf(" Men Women Children\n");
printf("........................................\n");
for(x=0;x<=10;x++)
{
y=20-2*x; /*x定值據(3)式求y*/
z=30-x-y; /*由(1)式求z*/
if(3*x+2*y+z==50) /*當前得到的一組解是否滿足式(2)*/
printf(" %2d: %d %d %d\n",++count,x,y,z);
}
}