今天碰到一个有趣的问题:

群友用shell写的一个:

#!/bin/bash

# 百元买百鸡,每种鸡至少买一只
all=
# 公鸡每只多少元
read -p '公鸡多少文一只: ' gongji
# 母鸡每只多少元
read -p '母鸡多少文一只: ' muji
# 每元钱可以买几只小鸡
read -p '小鸡多少只一文: ' xiaoji
# 百元最多买几只公鸡
gongji_count=`expr ${all} / ${gongji}` echo "======== 百元买百鸡 ========"
echo "公鸡${gongji}文钱一只,母鸡${muji}文钱一只,小鸡一文钱${xiaoji}只,用100文钱买100只鸡,公鸡、母鸡、小鸡都必须有,问公鸡、母鸡、小鸡各多少只?"
echo "公 母 小" for a in `seq ${gongji_count}`
do
f=`expr ${all} - ${a} \* ${gongji}`
g=`expr ${f} / ${muji}`
for b in `seq ${g}`
do
d=`expr ${all} - $a - $b`
[[ `expr ${d} % ${xiaoji}` == ]] && c=`expr ${d} / ${xiaoji}` || continue
[[ `expr ${a} \* ${gongji} + ${b} \* ${muji} + ${c}` == ${all} ]] && echo ${a} ${b} `expr ${c} \* ${xiaoji}`
done
done

不过, 我没看懂, 而且比较慢

我自己写了一个简单实现:

#!/bin/bash
#
#公鸡5块一只, 母鸡3块一只, 小鸡 1块钱3只
#求100块买100只鸡, 有几种买法
#
#
#version0. read -p "定义公鸡的价格(默认为5): " gjp
read -p "定义母鸡的价格(默认为3): " mjp
read -p "定义小鸡的价格为一块钱买?只(默认为3)": xjp [ -z $gjp ] && gjp=
[ -z $mjp ] && mjp=
[ -z $xjp ] && xjp= [ $[$gjp+$mjp+$xjp] -eq ] && echo "错误输入!" && exit ; gjmax=$[/$gjp]
mjmax=$[/$mjp] for ((i=;i<=$gjmax;i++));do
#公鸡的循环
for ((j=;j<=$mjmax;j++));do
#母鸡的循环
xj=$[(-$i*$gjp-$j*$mjp)*$xjp]
#公鸡加母鸡的总价算出可购买的小鸡的总数
[ $[$xj+$i+$j] -eq ] && [ $[$xj/$xjp + $i*$gjp+$j*$mjp] -eq ] && echo "公鸡:$i, 母鸡:$j, 小鸡: $xj" || continue;
# 总数量为100只 总价钱为100块
done
done

我们简单分析了一下算法, 发现for的循环不一样

例如: for a in `seq ${gongji_count}`

需要将 所有结果放入 list, 写入内存, 而后读取

这可能是影响运行的原因之一, 欢迎大佬分析留言

此处感谢@狂神小虾 无私提供的源码

shell编程, 100文钱买100只鸡, 简单实现的更多相关文章

  1. JS 公鸡2文一只、母鸡1文一只、小鸡0.5文一只若一共有100文钱买100只鸡有多少种方法

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. Java练习习题,百钱买百鸡问题,用100文钱买鸡,公鸡5文钱一只,母鸡3文钱一只,小鸡3只1文钱

    需求说明: 用100文钱买鸡,公鸡5文钱一只,母鸡3文钱一只,小鸡3只1文钱,要求公鸡.母鸡.小鸡都必须要有,刚好用完100文钱,公鸡.母鸡.小鸡的数量之和也是100. public class te ...

  3. PHP/Python---百钱百鸡简单实现及优化

    公鸡5块钱一只,母鸡3块钱一只,小鸡一块钱3只,用100块钱买一百只鸡,问公鸡,母鸡,小鸡各要买多少只? 今天看到这题很简单 ,但是随手写出来后发现不是最优的

  4. shell编程-1到100的求和与冒泡排序

    Shell编程 一.  for循环 生成列表 {起始数..结束数} 命令生成列表 `seq [起始数] [步进长度] 结束数 ` for  l in {1..5};do for  l in `seq ...

  5. shell中的变量a=100, 什么时候作整数使用, 什么时候作字符串使用呢?

    shell中的变量a=100, 什么时候作整数使用, 什么时候作字符串使用呢? 这确实是一个困扰很久的一个问题? how it can be an issue? 事实上, 在shell中, 你可以认为 ...

  6. bash shell for循环1到100 .

    前言 用bash shell写程序时,经常会用到for循环,特别是从1到100这种需求,这里记录几种shell中从1到100的循环方法   方法 类c语言 for ((i=1; i<=100;  ...

  7. Linux学习笔记(17) Shell编程之基础

    1. 正则表达式 (1) 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep.awk.sed等命令可以支持正则表达式:通配符用来匹配符合条件的文件名,通配符是完全匹配.ls.find ...

  8. Shell编程菜鸟基础入门笔记

    Shell编程基础入门     1.shell格式:例 shell脚本开发习惯 1.指定解释器 #!/bin/bash 2.脚本开头加版权等信息如:#DATE:时间,#author(作者)#mail: ...

  9. linux中shell编程

    shell编程 1 echo -e 识别\转义符 \a \b \t \n \x十六进制 \0八进制 等等 #!/bin/bash echo -e "hello world" 执行脚 ...

随机推荐

  1. (转载) listview实现微信朋友圈嵌套

    listview实现微信朋友圈嵌套 标签: androidlistview 2016-01-06 00:05 572人阅读 评论(0) 收藏 举报  分类: android(8)  版权声明:本文为博 ...

  2. heavy dark--读《《暗时间》》

    本书名为<<暗时间>>,个人觉得是一个非常好的名字:1.迷茫的大学生有多少的业余时间,但又浪费多少的业余时间,浪费的这莫多时间就如同人在黑夜中一样,大脑是在休息的状态.这是第一 ...

  3. Android ImageView 替换图片

    网上找了半天,找到的都是错的,都不是我想要的效果.我想要的是点击一个图片后,图片被替换. 通过一下方法可以实现:“v”是ImageView对象,“image_name”是替换后的图片资源 ((Imag ...

  4. 分享一个正则对html标签的替换

    replace_html(parm){ let self = this; return self.trim(parm.replace(new RegExp("<[^<]*> ...

  5. ZBrush中标准笔刷介绍

    ZBrush最实用.精彩的部分便是雕刻了,笔刷又有时雕刻时必不可少的工具,ZBrush中给我们提供了很多种笔刷,那么,最基础.最常用的笔刷是什么呢,本文内容向大家介绍ZBrush®中标准笔刷以便大家熟 ...

  6. 洛谷P2915 [USACO08NOV]奶牛混合起来Mixed Up Cows 状压动归

    考场上空间开大了一倍就爆0了QAQ- Code: #include<cstdio> #include<algorithm> #include<cmath> usin ...

  7. -bash: wget 未找到命令的解决办法

    在Linux操作系统中,我们会经常要用到wget下载文件.wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性. 在linux中使用wget时,若报-bash: wget: comman ...

  8. sql删除注意的问题

    老大骂你都是有原因的,基础要打好!!!! SQL关于删除的三个语句:DROP.TRUNCATE. DELETE 的区别. DROP test; 删除表test,并释放空间,将test表删除的一干二净 ...

  9. KindEditor 上传图片浏览器兼容性问题

    1.使用 KindEditor 的图片上传插件时,需要返回如下格式的 JSON 数据 //成功时 { "error" : 0, "url" : "ht ...

  10. angular-resource

    上一篇中讲到使用$http同服务器进行通信,但是功能上比较简单,angularjs还提供了另外一个可选的服务$resource,使用它可以非常方便的同支持restful的服务单进行数据交互. 安装 n ...