c++、python、vb求解百钱百鸡问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题,该问题叙述如下:鸡翁一,值钱三;鸡母一,值钱二;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?
翻译过来,意思是公鸡一个三块钱,母鸡一个二块钱,小鸡三个一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?
题目分析
如果用数学的方法解决百钱买百鸡问题,可将该问题抽象成方程式组。
设公鸡x 只,母鸡y 只,小鸡z 只,得到以下方程式组:
A:3x+2y+1/3z = 100
B:x+y+z = 100
C:0 <= x <= 100
D:0 <= y <= 100
E:0 <= z <= 100
如果用解方程的方式解这道题需要进行多次猜解,因此我们用穷举法的方式来解题。
1.C++语言
#include<iostream>
using namespace std;
int main()
{
int i,j,k,x,y,z;
for (i=0;i<=33;i++)
for(j=0;j<=50;j++)
for(k=0;k<=100;k++)
if((3*i+2*j+k/3==100)&&(i+j+k==100)&&k%3==0)
cout<<i<<" "<<j<<" "<<k<<endl;
return 0;
}
2.Python语言
for i in range(33):
for j in range(50):
for k in range(100):
if (3*i+2*j+k/3==100) and (i+j+k==100) and (k%3==0):
print(i,j,k)
3.VB语言
Dim a As Integer, b As Integer, c As Integer
For a = 0 To 33
For b = 0 To 50
For c = 0 To 100
If 3 * a + 2 * b + 1 / 3 * c = 100 And a + b + c = 100 Then
Print "公鸡" & a, "母鸡" & b, "小鸡" & c
End If
Next c
Next b
Next a。