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

群友用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. javascript中菜单栏切换案例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 快速新建一个纯净的java pom项目 project

    前期的java环境安装就不再阐述了使用步骤java -jar project-creator-0.1.jar projectName [war] 1> 比如你要创建一个项目名字叫 smile-o ...

  3. java 公开内部类无法实例化 no enclosing instance 解决办法

    因为B类不是A类的静态内部类,所以B累也只能像A类的成员一样通过new A()的实例访问,new(new A()).B(),这显然不是我们想要的方式,于是需要在B类的前边加上static,变成下边这样 ...

  4. MySQL 关闭 binlog 日志

    [关闭binlog日志] 1.vim /etc/my.cnf 注释如下内容: #log-bin=mysql-bin #binlog_format=mixed #server-id = 1 #expir ...

  5. Activiti Workflow HelloWorld 示例与测试环境搭建

    作者:Rock 出处:http://www.ecmkit.com/zh-hans/2012/03/21/activiti-workflow-hell Activiti Workflow HelloWo ...

  6. ivew Modal rule校验冲突问题

    问题描述:新建和编辑公用的是一个弹框,打开新建关闭之后,会影响到编辑的弹框.  解决方法:赋值前先重置一下表单  this.$refs["你的表单"].resetFields();

  7. vue 页面跳转及参数传递和接收

    跳转: this.$router.push({name: 'My',params:{ id:'1',name:'anson'}});   接收: {{this.$route.params.id}}

  8. BZOJ 1717 [USACO06DEC] Milk Patterns (后缀数组+二分)

    题目大意:求可重叠的相同子串数量至少是K的子串最长长度 洛谷传送门 依然是后缀数组+二分,先用后缀数组处理出height 每次二分出一个长度x,然后去验证,在排序的后缀串集合里,有没有连续数量多于K个 ...

  9. ResNet入门

    CNN入门讲解:什么是残差网络Resnet 变种神经网络的典型代表:深度残差网络 深度残差神经网络ResNet 学习笔记 https://blog.csdn.net/loveliuzz/article ...

  10. pytorch 6 batch_train 批训练

    import torch import torch.utils.data as Data torch.manual_seed(1) # reproducible # BATCH_SIZE = 5 BA ...