C语言百钱买百鸡问题(详解版)
我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题,该问题叙述如下:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?
翻译过来,意思是公鸡一个五块钱,母鸡一个三块钱,小鸡三个一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?
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!
代码清单:
翻译过来,意思是公鸡一个五块钱,母鸡一个三块钱,小鸡三个一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?
题目分析
如果用数学的方法解决百钱买百鸡问题,可将该问题抽象成方程式组。设公鸡 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> int main() { int i, 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); } } return 0; }运行结果:
百元买百鸡的问题所有可能的解如下: 公鸡 0 只,母鸡 25 只,小鸡 75 只 公鸡 4 只,母鸡 18 只,小鸡 78 只 公鸡 8 只,母鸡 11 只,小鸡 81 只 公鸡 12 只,母鸡 4 只,小鸡 84 只
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算