设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 4040|回复: 10
打印 上一主题 下一主题

[模块/函数] 一道小学的鸡兔同笼的题,请大家用VBA算一下

[复制链接]
跳转到指定楼层
1#
发表于 2016-6-2 13:22:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
儿子今天留的一道小学数学题,老师说是鸡兔同笼的题,对于这个概念我辈还是第一次听说,小时候好像叫做如何算腿
一共有20道题,答对一道得5分,不答或答错一题扣3分.得68分,问对了多少道题?问 错了了多少道题?谢谢
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2016-6-2 13:29:59 | 只看该作者
答错一道的得分=答对一道的得分-8

假设20题都答对,满分为100,现得分为68,一共扣了32分,所以答错的题目数量=32/8=4

所以答对了16,答错了4

点击这里给我发消息

3#
发表于 2016-6-2 13:33:44 | 只看该作者
本帖最后由 盗梦 于 2016-6-2 13:37 编辑

先来个简单的暴力美学:
  1. Dim i as Long, allSroce as Long
  2. for i = 0 to 20 'i 为答对题数
  3.     allSroce = 5*i-3*(20-i)
  4.     if allSroce=68 Then
  5.          debug.print "答对题数:" & i
  6.          exit for
  7.     end if
  8. next
复制代码

点击这里给我发消息

4#
发表于 2016-6-2 13:36:24 | 只看该作者
阿木好快的速度!

点击这里给我发消息

5#
发表于 2016-6-2 13:36:49 | 只看该作者
再来一个直接的计算:
  1. function calc(sroce as long) as long
  2.     calc = 20-(5*20-sroce)/(5+3)
  3. end function
  4. debug.print calc(68)
复制代码
6#
发表于 2016-6-2 13:43:36 | 只看该作者
  1. Function RabitChicken(ByVal lngHeads As Long, ByVal lngFeet As Long) As String
  2.     Dim lngRabits As Long
  3.     Dim lngChickens As Long
  4.    
  5.     lngChickens = (4 * lngHeads - lngFeet) / 2
  6.     lngRabits = lngHeads - lngChickens
  7.     RabitChicken = "兔子:" & lngRabits & "只;鸡:" & lngChickens & "只"
  8. End Function
复制代码
调用结果:
鸡兔同笼是小学奥数最常见的一种题型。
如果用二元一次方程求解,其实很简单。然而小学没学过二元一次方程,不知道如何替换变量。因此常常使用假设法:
以截图为例,先假设全部是兔子(或者鸡也行,随便你了),那么腿应该是400条。
但是现在只有350条,少了50条。
而兔子的腿比鸡的多2条。也就是说,每只兔子换成一只鸡,就少2条腿。
少的50条腿可以换成的鸡是:50/2=25。即鸡数=25只,兔子=100-25=75只。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
7#
 楼主| 发表于 2016-6-2 14:09:57 | 只看该作者
谢谢大家的回答,老师们太厉害了!

点击这里给我发消息

8#
发表于 2016-6-2 17:20:42 | 只看该作者
回复几秒钟之间,阿航已经回了几贴
9#
发表于 2016-6-2 17:48:11 | 只看该作者
tmtony 发表于 2016-6-2 17:20
回复几秒钟之间,阿航已经回了几贴

可以再加一个参数,把多脚的情况都考虑进去。
例如“鸡蜘蛛同笼”……【等等,确定鸡不吃蜘蛛吗?
10#
发表于 2016-6-2 17:57:17 | 只看该作者
本帖最后由 todaynew 于 2016-6-2 18:03 编辑

Function GetArr(鸡腿 As Integer, 兔腿 As Integer, 鸡兔数 As Integer, 腿总数 As Integer) As Variant
    Dim Arr(1) As Integer
    Dim x As Integer '鸡
    Dim y As Integer '兔
    x = (腿总数 - 兔腿 * 鸡兔数) / (鸡腿 - 兔腿)
    y = 鸡兔数 - x
    Arr(0) = x
    Arr(1) = y
    GetArr = Arr
End Function



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-2 01:23 , Processed in 0.076525 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表