Java程序百钱百鸡
2021/7/31 17:07:44
本文主要是介绍Java程序百钱百鸡,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
百钱百鸡 java解决
题目:
我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题,该问题叙述如下:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?
百钱买百鸡的问题算是一套非常经典的不定方程的问题,题目很简单:公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,
用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。
方法一
思路:总钱数是100 i j k 都是只 所以关系是only = i + j + k;和 money = 5 * i + 3 * j + k/3 找到关系后就让代码自己去试去吧
int timer = 0; //计时器 for (int i = 0; i < 20; i++) { //公鸡5钱一只 i代表只 20-->代表100最多买20只 for (int j = 0; j < 33; j++) { //母鸡3钱一只 j代表只 33-->代表100最多买20只 for (int k = 0; k < 100; k +=3) { //小鸡1钱三只 K代表只 按理说是300只 但100-->代表最多能买100只 int money = 5 * i + 3 * j + k/3; // k/3会取整 看上面k的循环 都可以被3整除 你可以解释为小鸡3只的卖 int only = i + j + k; timer++; if (money == 100 && only == 100) { System.out.printf("公鸡:%d 母鸡:%d 小鸡:%d %n", i, j, k); } } } } System.out.println("运行了" + timer + "次");
结果
公鸡:0 母鸡:25 小鸡:75 公鸡:4 母鸡:18 小鸡:78 公鸡:8 母鸡:11 小鸡:81 公鸡:12 母鸡:4 小鸡:84 运行了22440次
方法二
思路:总钱数是100 i j k 都是钱 所以关系是only = i/5 + j/3 + 3*k;和 money = 5 * i + 3 * j + k/3 找到关系后就让代码自己去试去吧
这个思路小心取整问题
int timer = 0; for (int i = 0; i < 100; i+=5) { //公鸡5钱一只 i代表钱 i每次加5 你可以解释为只要买公鸡就花5 100-->理解为最多100元 for (int j = 0; j < 100; j+=3) { //母鸡3钱一只 j代表钱 j每次加5 你可以解释为只要买母鸡鸡就花3 100-->理解为最多100元 for (int k = 0; k < 100; k ++) { //小鸡1钱三只 k代表钱 100-->理解为最多100元 int money = i + j + k; int only = i/5 + j/3 + 3*k; //这样就不怕取整问题 看上面循环就知道原因了 timer++; if (money == 100 && only == 100) { System.out.printf("公鸡:%d 母鸡:%d 小鸡:%d %n", i/5 ,j/3 , 3*k); } } } } System.out.println("运行了" + timer + "次");
结果
公鸡:0 母鸡:25 小鸡:75 公鸡:4 母鸡:18 小鸡:78 公鸡:8 母鸡:11 小鸡:81 公鸡:12 母鸡:4 小鸡:84 运行了68000次
方法三(看懂了上面下面你就更懂了 我只举一例)
思路:不过i j k 是代表钱还是只,都可以相互转换,只要小心取整问题都ok
关系为:
money = 5 * i + 3 * j + k
only = i + j + 3*k
int timer = 0; for (int i = 0; i < 20; i++) { //公鸡5钱一只 i代表只 for (int j = 0; j < 33; j++) { //母鸡3钱一只 j代表只 for (int k = 0; k < 100; k ++) { //小鸡1钱三只 k代表钱 int money = 5 * i + 3 * j + k; int only = i + j + 3*k; timer++; if (money == 100 && only == 100) { System.out.printf("公鸡:%d 母鸡:%d 小鸡:%d %n", i, j, 3*k); } } } } System.out.println("运行了" + timer + "次");
结果
公鸡:0 母鸡:25 小鸡:75 公鸡:4 母鸡:18 小鸡:78 公鸡:8 母鸡:11 小鸡:81 公鸡:12 母鸡:4 小鸡:84 运行了66000次
这篇关于Java程序百钱百鸡的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南