《九章算术》属于算经十书中的一部,是中国古典数学专著。这些经典数学专著中,有许多众所周知的问题。现在是计算机无所不在的时代,那些问题与其用数学方法来解,不如用计算机程序来解。这个时代是计算解决问题的时代。

《九章算术》卷第二 粟米的四十五题和四十六题如下:

〔四五〕今有出钱六百二十,买羽二千一百翭。欲其贵贱率之,问各几何?答曰:其一千一百四十翭,三翭一钱。其九百六十翭,四翭一钱。
〔四六〕今有出钱九百八十,买矢簳五千八百二十枚。欲其贵贱率之,问各几何?答曰:其三百枚,五枚一钱。其五千五百二十枚,六枚一钱。

仔细阅读可以知道,这两个问题几乎是同一类型的,可以用同一个程序来解。

这两个问题,已知的是钱多少,买了多少东西。所买的东西分贵和贱两种,需要求的是贵和贱的东西各买了多少,其价格各为多少。给2个数,需要求4个数。另外一点,需要假设古代的钱是比较值钱的,1钱可以买多个物品。再一点是,经过试算,钱如果太值钱则可行解就太多了,于是假定1钱最多买10个物品。

穷举法在这个问题中是非常适用的。贵的物品所用钱数从1钱(循环变量i)开始试算,那么贱的物品所用钱数=所有钱数-贵的物品钱数。贵的物品价格从1开始试到10(循环变量j),贱的物品价格从j+1开始试到10(循环变量k),满足j<k。

程序如下:

/** 今有出钱六百二十,买羽二千一百翭。欲其贵贱率之,问各几何?答曰:其一千一百四十翭,三翭一钱。其九百六十翭,四翭一钱。** 今有出钱九百八十,买矢簳五千八百二十枚。欲其贵贱率之,问各几何?答曰:其三百枚,五枚一钱。其五千五百二十枚,六枚一钱。** 这两个问题出自《九章算术》卷第二粟米的四十五题和四十六题。*/#include <stdio.h>#define MAX_PRICE 10int main(void)
{int coin, goods, e_coin, c_coin;int i, j, k;while(scanf("%d%d", &coin, &goods) != EOF)for(i=1; i<= coin; i++) {e_coin = i;c_coin = coin - e_coin;for(j=1; j<=MAX_PRICE; j++) {for(k=j+1; k<=MAX_PRICE; k++) {if(e_coin * j + c_coin * k == goods) {printf("%5d %2d %5d %2d %d+%d=%d %d/%d+%d/%d=%d\n",e_coin * j, j, c_coin * k, k,e_coin * j, c_coin * k, goods,e_coin * j, j, c_coin * k, k, coin);break;}}}}return 0;
}

输入两组数据,一是620和2100,二是980和5820,程序运行结果如下:

620 2100
  380  2  1720  4 380+1720=2100 380/2+1720/4=620
  250  1  1850  5 250+1850=2100 250/1+1850/5=620
  324  1  1776  6 324+1776=2100 324/1+1776/6=620
 1140  3   960  4 1140+960=2100 1140/3+960/4=620
  810  2  1290  6 810+1290=2100 810/2+1290/6=620
  435  1  1665  9 435+1665=2100 435/1+1665/9=620
  896  2  1204  7 896+1204=2100 896/2+1204/7=620
 1500  3   600  5 1500+600=2100 1500/3+600/5=620
 1620  3   480  6 1620+480=2100 1620/3+480/6=620
 1680  3   420  7 1680+420=2100 1680/3+420/7=620
 1716  3   384  8 1716+384=2100 1716/3+384/8=620
 1740  3   360  9 1740+360=2100 1740/3+360/9=620
980 5820
   12  1  5808  6 12+5808=5820 12/1+5808/6=980
   30  2  5790  6 30+5790=5820 30/2+5790/6=980
   60  3  5760  6 60+5760=5820 60/3+5760/6=980
  120  4  5700  6 120+5700=5820 120/4+5700/6=980
  300  5  5520  6 300+5520=5820 300/5+5520/6=980
  416  2  5404  7 416+5404=5820 416/2+5404/7=980
  780  3  5040  7 780+5040=5820 780/3+5040/7=980
  375  1  5445  9 375+5445=5820 375/1+5445/9=980
 1212  3  4608  8 1212+4608=5820 1212/3+4608/8=980
 1500  3  4320  9 1500+4320=5820 1500/3+4320/9=980
 2020  4  3800  8 2020+3800=5820 2020/4+3800/8=980
 2600  5  3220  7 2600+3220=5820 2600/5+3220/7=980
 2400  4  3420  9 2400+3420=5820 2400/4+3420/9=980
 3750  5  2070  9 3750+2070=5820 3750/5+2070/9=980
 3980  5  1840 10 3980+1840=5820 3980/5+1840/10=980

《九章算术》卷第二 粟米的四十五题和四十六题给出的解也在上述结果中。

然而,程序计算出的可行解远多于1个,这是假定1钱最多买10个物品条件下得到的结果。



I00024 出钱买羽相关推荐

  1. 三手火箭载二手飞船送四名平民上太空,马斯克负责创造历史,另一位富豪出钱买单...

    博雯 晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI 马斯克又创造了商业航天新历史. 北京时间今天上午8点02分,佛罗里达州肯尼迪航天中心,SpaceX的猎鹰9号火箭搭载龙飞船发射升空. ...

  2. 趣味程序之古典与经典问题系列

    古典与经典问题系列程序一览如下,点击进入博客文章: I00008 百鸡问题 I00013 鸡兔同笼 I00022 孙子定理 I00023 鸡兔同笼解法二 I00024 出钱买羽 I00014 汉若塔问 ...

  3. 《程序设计技术》课程辅助学习资料

    本文档提供课程相关的辅助学习资料. 阅读程序是提高程序设计水平的最为有效的方法,<程序设计技术>课程至少应该阅读后面提供链接博文中的基础部分.能够阅读完基础部分的博文,则可以给课程学习奠定 ...

  4. 什么是pdi检测_为什么国人买车钟爱白色?这几点购车陷阱不要踩

    买车,大家最注重的是哪些细节呢?一般懂车的人都会先看汽车的性能和价格,也就是我们常说的性价比,当然了,这里也得带上汽车的颜值.俗话说,颜值不够,衣品来凑,人是这样,车也一样,我们先抛开汽车本身的造型不 ...

  5. 舌尖上的职场(三)我来买单!(转)

    对于每个决心闯荡饭局的职场人,一个至为关键的问题便是--谁来为饭局买单? "我来买单!"老孙的回答很明确. "自己酒足饭饱,别人出钱买单,这有什么不好?"一听此 ...

  6. 舌尖上的职场(三)我来买单!

    舌尖上的职场(三)我来买单! 对于每个决心闯荡饭局的职场人,一个至为关键的问题便是--谁来为饭局买单? "我来买单!"老孙的回答很明确. "自己酒足饭饱,别人出钱买单,这 ...

  7. 打算在县城“买”片地

    大家好,我是沉默王二. 我老家不在县城,在离县城的一个很远的村里. 远到什么程度呢? 上小学的时候,家里买了一台黑白电视机,如果没记错的话,应该是熊猫牌,接收信号的天线是用一根长长的木桩支到房顶上的, ...

  8. 九章算术卷第二 粟米

    粟米之法:粟率五十粝米三十 粺米二十七凿米二十四 御米二十一小●十三半 大●五十四粝饭七十五 粺饭五十四凿饭四十八 御饭四十二菽.答.麻.麦各四十五 稻六十豉六十三 飧九十熟菽一百三半 櫱一百七十五 ...

  9. [生存志] 第117节 九章算术均徭赋

            九章算术均徭赋                  贾谊在27岁时向汉文帝进献的<治安策>一文,洋洋洒洒6844个字,写了汉帝国开国30年时的九件让他忧伤难过的事情,所谓『可 ...

最新文章

  1. 基于微软开源深度学习算法,用 Python 实现图像和视频修复
  2. Django 各类配置选项全集
  3. 模拟运维中产品上线流程
  4. SQL Server2008附加数据库之后显示为只读时解决方法
  5. oracle 外部表装载,Oracle 原理:数据装载 ,SQLldr ,外部表
  6. 再谈angularjs DI(Dependency Injection)
  7. Go语言详细介绍:logo和版本
  8. 音创linux版e100加歌,【图片】音创高清点歌机E100-3D版 火爆上市 现将资料爆出_点歌机吧_百度贴吧...
  9. UEditor 配置
  10. oppo系统android版本下载,oppo手机助手
  11. 群晖系统硬盘损毁的修复
  12. Windows10查看便签
  13. 中间件系列六 RabbitMQ之Topic exchange 用法
  14. 下岗工冰城卖火“鱼豆腐”
  15. 有些段子,外行人根本看不懂,只有程序员看了会狂笑不止
  16. 开门的磁卡在哪里配_门禁卡能配吗?
  17. 设备健康管理软件如何帮助企业优化设备维保计划?
  18. FileOutputStream flush()
  19. 关闭Nao机器人自带的摔倒保护
  20. 浙江大学计算机2016年推免录取名单,浙江大学2017年计算机科学与技术学院推免生名单...

热门文章

  1. 解决unity 打包在Android 8.0上启动出现黑屏问题(Android权限弹窗问题)
  2. Comet:基于HTTP长连接的“服务器推”技术
  3. summernote 不能上传图片_Typora自定义命令自动上传图片
  4. virtualbox安装win7_全网最详细的安装eNSP和HCL步骤和出现的问题及解决方法
  5. php高德地图计算距离接口,高德地图计算两坐标之间距离
  6. 认识HTML与CSS
  7. Spring MVC中静态资源加载
  8. Vertica系列: Vertica 数仓简单介绍
  9. Hive与RDBMS的区别
  10. Transformations on DStreams之updateStateByKey 的使用和状态累加