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程序百钱百鸡相关推荐
- java基础练习—逢七游戏、不死神兔、百钱百鸡、利滚利
Java基础练习 1.1 减肥计划if版本 1.1.1 案例需求 输入星期数,显示今天的减肥活动 周一:跑步 周二:游泳 周三:慢走 周四:动感单车 周五:拳击 周六:爬山 周日:好好吃一顿 pack ...
- Java基础重温_06:Debug模式(打断点、下一步),基础练习案例(减肥计划if,switch版本、逢七跳过、不死神兔、百钱白鸡、数组元素(求和,索引位置,反转)、判断数组是否相同、评委打分)
1.IDEA,Debug模式 是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序. 基础练习案例 1.减肥计划if版本 案例需求 输入星期数,显示今天 ...
- java while求百钱买百鸡问题_java - 百钱百鸡小算法
百钱百鸡是一个非常经典的不定方程问题,最早源于我国古代的<算经>,这是古代著名数学家张丘建首次提出的.百钱百鸡问题原文如下: 鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买白鸡,问 ...
- java - 百钱百鸡小算法
传送门: 袁咩咩的小小博客 百钱百鸡是一个非常经典的不定方程问题,最早源于我国古代的<算经>,这是古代著名数学家张丘建首次提出的.百钱百鸡问题原文如下: 鸡翁一,值钱五,鸡母一,值钱三,鸡 ...
- #Java编程题-百钱百鸡
问题: 百钱百鸡问题.用100钱买100只鸡,公鸡一只五钱,母鸡一只三钱,雏鸡三只一钱,编程计算共有几种买法(要求每种鸡至少要买1只). 自己的实现,没有什么数据结构,算法,求大神指点!! packa ...
- 【Java基础】Debug模式操作流程及案例:不死神兔、百钱百鸡
目录 一.Debug模式操作流程 如何加断点 如何运行加断点的程序 点哪里 如何删除断点 二.案例:不死神兔 三.案例:百钱百鸡 一.Debug模式操作流程 Debug模式是供程序员使用的程序调试工具 ...
- Java基础练习题(逢七跳过、百钱百鸡、不死神兔、复利(利滚利))
Java练习题(逢七跳过.百钱百鸡.不死神兔.复利(利滚利)) Java学习中遇到的练习题,用自己的思路解决这几个问题,新手写法,仅供参考 逢七跳过 朋友聚会的时候可能会玩一个游戏:逢七过. 规则是: ...
- java逻辑循环经典案例(不死神兔、百钱百鸡、逢七过、评委打分、数组翻转)
1减肥计划: 星期一:跑步: 星期二:游泳; 星期三:慢走; 星期四:动感单车 星期五:拳击 ;星期六:爬山; 星期日:好好吃一顿. import java.util.Scanner; /*减肥计划: ...
- JAVA基础知识练习(减肥计划、逢七过、不死神兔、百钱百鸡、数组元素求和、数组内容相同、查找、反转、评委打分)
案例:减肥计划1 需求: 输入星期数,显示今天的减肥活动 周一:跑步 周二:游泳 周三:慢走 周四:动感单车 周五:拳击 周六:爬山: 周日:好好吃一顿 分析: (1)键盘录入一个星期数,用一个变量来 ...
最新文章
- 安装centos 7 桌面
- 利用Docker设置Node.js
- Maximum sum(信息学奥赛一本通-T1305)
- 【CloudXNS教您几招】如何让多ip域名配置游刃有余?(2)
- 基于vue的nuxt框架cnode社区服务端渲染
- cgi php是什么意思,cgi,fastcgi,php-cgi,php-fpm 是什么
- Vue 配置请求本地Json数据
- 手机U盘制作成系统启动盘后在手机端无法识别
- python爬取起点中文网_Python3爬取起点中文网阅读量信息,解决文字反爬~~~附源代码...
- 实验6 地理数据可视化
- python 负数索引
- 网站内容收录不稳定/不收录的原因分析
- 莫再用唐僧式的唠叨施加影响----家长式管理者实施HOLA的障碍
- 均匀球体模型的重力异常正演
- python 提取sogou中文语料库
- hihoCoder1054—滑动解锁(深搜)
- 京东第二轮裁员来袭,套路满满:假装劝退,劝员工找工作,贬低工作能力,忽悠员工不走仲裁!...
- 遗传算法的运用(Python版)
- 【转】异常清晰GeoEye-1 卫星照片来了
- Sniffer的讨论