专栏首页Java后端技术栈cwnait笔试题:代码如何实现“百钱买百鸡”?

笔试题:代码如何实现“百钱买百鸡”?

回复“面试”获取全套大厂面试资料

百钱买百鸡是一个非常经典的不定方程问题,最早源于我国古代的《算经》,这是古代著名数学家张丘建首次提出的。在笔试题中出现频率也也非常高,所以今天咱们就来聊来这个很有意思的算法题。

百钱买百鸡问题的原文如下:

鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?

这个问题的大致意思是公鸡5块钱1只,母鸡3块钱1只,小鸡3只1块钱,如果用100块钱买100只鸡,那么公鸡、母鸡和小鸡各应该买多少只呢?

理清思路

百钱买百鸡问题中,两大变量:总钱数量和总鸡数量

总鸡数量可分为三个变量:公鸡数量、母鸡数量和小鸡数量,分别设为x、y和z。

这三者应该满足如下关系:

x+y+z=总鸡数量 5x+3y+z/3=总钱数量

这里有三个变量,两个方程,因此是一个不定方程问题。这将导致求解的结果不只一个。可以根据上述两个方程来求出所有可能的结果。

代码实现
public class BuyChicken {
    public static void main(String[] args) {
        int m = 100;
        int n = 100;
        System.out.printf("使用总钱 %d 可以总鸡数量 %d 医用有以下几种方案:\n", m, n);
        buyChicken(m, n);
    }

    public static void buyChicken(int m, int n) {
        int x;
        int y;
        int z;
        for (x = 0; x <= n; x++) {//公鸡数量
            for (y = 0; y <= n; y++) {//母鸡数量
                z = n - x - y;//小鸡数量
                if (z > 0 && z % 3 == 0 && (x * 5 + y * 3 + (z / 3)) == m) {
                    System.out.printf("公鸡:%d 母鸡:%d 小鸡:%d \n", x, y, z);
                }
            }
        }
    }
}

输出:

使用总钱 100 可以总鸡数量 100 有以下几种方案:
公鸡:0 母鸡:25 小鸡:75
公鸡:4 母鸡:18 小鸡:78
公鸡:8 母鸡:11 小鸡:81
公鸡:12 母鸡:4 小鸡:84

输入参数m为钱数,输入参数n为购买的鸡数。程序中,通过两层循环来穷尽公鸡数量和母鸡数量,然后在if语句中判断是否满足方程的条件。如果满足条件,则表示是一种解,将其输出。

ok,今天的算法题就到这里。小小乐趣!

本文分享自微信公众号 - Java后端技术全栈(jjs-2018),作者:田老师

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-09-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 面试被问Nginx服务器之负载均衡策略

    在服务器集群中,Nginx起到一个代理服务器的角色(即反向代理),为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器。详情请查看我的另一篇博客...

    用户4143945
  • 微服务架构中你必须了解的 CAP 原理

    一句话概括 CAP:在分布式系统中,网络故障,服务瘫痪,整个系统的数据仍然保持一致性。

    用户4143945
  • GOF23种设计模式类型、描述和类图(下)

    描述: 将一个类的接口变换成客户端锁期待的另一种接口,从而是原本因接口欧不匹配而无法再一起工作的两个类能够在一起工作 。

    用户4143945
  • 超级!超级!超级好用的视频标注工具

    $ wget http://mit.edu/vondrick/vatic/vatic-install.sh

    计算机视觉研究院
  • 2018年 九大改变世界的技术趋势

    来自:数据观 https://www.shujuguan.cn/?from=qcloud

    数据观-数据分析平台
  • 大数据如何促进经济增长?中国优势及应对 | 互联网经济学

    Y=AF(K,L)的增长核算框架已经在发生变化,数据本身成为了生产要素,即Y=AF(D,K,L)。原有生产函数中,A、K、L一般而言都有明确的产权属性,没有考虑...

    华章科技
  • Python学习-hashlib

    Python的hashlib提供了常见的摘要算法,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法。

    py3study
  • 常用公差及配合

    1.1.1 零线---在极限与配合图解中,表示基本尺寸的一条直线.以其为基准确定偏差和公差;

    用户7505898
  • CNCC 2018 | Google 中日韩文搜索算法主要设计者吴军:区块链可能是大数据安全解决之道

    AI 科技评论按:2018 中国计算机大会(CNCC2018)于 10 月 25-27 日在杭州国际博览中心举办,会议由中国计算机学会(CCF)主办,杭州市萧山...

    AI科技评论
  • 启动 uiautomatorviewer

    现象,之前本机上的 uiautomatorviewer 一直是好的,最近这段时间无故就不行了,报如标题错误,网上找了各种办法仍无法有效解决,静心细想上一次使用该...

    py3study

扫码关注云+社区

领取腾讯云代金券