C趣味編程百例(12)馬克思手稿中的數(shù)學(xué)題

字號(hào):

41.馬克思手稿中的數(shù)學(xué)題
     馬克思手稿中有一道趣味數(shù)學(xué)問(wèn)題:有30個(gè)人,其中有男人、女人和小孩,在一家飯館吃飯花了50先令;每個(gè)男人花3先令,每個(gè)女人花2先令,每個(gè)小孩花1先令;問(wèn)男人、女人和小孩各有幾人?
    *題目分析與算法設(shè)計(jì)
     設(shè)x,y,z分別代表男人、女人和小孩。按題目的要求,可得到下面的方程:
     x+y+z=30 (1)
     3x+2y+z=50 (2)
     用方程程序求此不定方程的非負(fù)整數(shù)解,可先通過(guò)(2)-(1)式得:
     2x+y=20 (3)
    由(3)式可知,x變化范圍是0~10
    *程序說(shuō)明與注釋
    #include
    void 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定值據(jù)(3)式求y*/
     z=30-x-y; /*由(1)式求z*/
     if(3*x+2*y+z==50) /*當(dāng)前得到的一組解是否滿足式(2)*/
     printf(" %2d: %d %d %d\n",++count,x,y,z);
     }
    }