C语言解决百钱买百鸡问题
我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题,该问题叙述如下:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?
翻译过来,意思是公鸡一个五块钱,母鸡一个三块钱,小鸡三个一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?
题目分析
如果用数学的方法解决百钱买百鸡问题,可将该问题抽象成方程式组。设公鸡x只,母鸡y只,小鸡z只,得到以下方程式组:
A:5x+3y+1/3z=100
B:x+y+z=100
C:0<=x<=100
D:0<=y<=100
E:0<=z<=100
如果用解方程的方式解这道题需要进行多次猜解,计算机的一个优势就是计算速度特别暴力并且无怨无悔,所以我们可以欺负她、蹂躏她!因此我们用穷举法的方式来解题,需要101^3次猜解,但对于计算机来说,小CASE!
代码清单:
#include<stdio.h> intmain() { inti,j,k; printf("百元买百鸡的问题所有可能的解如下:\n"); for(i=0;i<=100;i++) for(j=0;j<=100;j++) for(k=0;k<=100;k++) { if(5*i+3*j+k/3==100&&k%3==0&&i+j+k==100) { printf("公鸡%2d只,母鸡%2d只,小鸡%2d只\n",i,j,k); } } return0; }
运行结果:
百元买百鸡的问题所有可能的解如下: 公鸡0只,母鸡25只,小鸡75只 公鸡4只,母鸡18只,小鸡78只 公鸡8只,母鸡11只,小鸡81只 公鸡12只,母鸡4只,小鸡84只