设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[模块/函数] 一道数学题,请大家帮助看看,,谢谢

[复制链接]
跳转到指定楼层
1#
发表于 2015-9-24 21:30:16 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
问: 一个三位数,个位上的数字比十位上的数字大1,个位上的数字比百位上的数字大3,把百位上的数字与个位上的数字交换位置后得到一个新数,新数与原数的和为787,原数是多少?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
14#
发表于 2015-9-29 17:18:32 | 只看该作者
站到终点站 发表于 2015-9-28 10:35
这个题目用规划求解可以轻松的解出来。

规划求解当然很好的。只是楼主要求编程,那就编写一个呗
好久不见,又在开发什么呢?

点击这里给我发消息

13#
发表于 2015-9-28 10:35:49 | 只看该作者
这个题目用规划求解可以轻松的解出来。

本帖子中包含更多资源

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

x
12#
发表于 2015-9-26 20:16:54 | 只看该作者
roych 发表于 2015-9-25 10:21
不错不错。不过还可以优化下语句【调用:call test(787)】:

你肯定也是个高手。
11#
发表于 2015-9-26 20:15:19 | 只看该作者
盗梦 发表于 2015-9-25 09:14
你这个循环次数太多了

嗯,说得对,赞一个。。。
10#
发表于 2015-9-26 10:06:12 | 只看该作者
好题
回复

使用道具 举报

9#
 楼主| 发表于 2015-9-25 13:30:28 | 只看该作者
谢谢大家帮助!1
8#
发表于 2015-9-25 10:21:53 | 只看该作者
本帖最后由 roych 于 2015-9-25 10:29 编辑
jnne 发表于 2015-9-25 00:19
我还是个高三学生,学的是计算机,但是到现在考老师没教更深的语句。。。
你的问个问题,我应该是没问题, ...

不错不错。不过还可以优化下语句【调用:call test(787)】:
  1. Function test(ByVal lngResult As Long) As Long
  2. Dim i As Long
  3. 'lngResult=调换后的结果
  4. '一下是计算简化过程:

  5. '假定a,b,c分别为百位、十位、个位,个位数跟百位数对调后则:
  6. '
  7. '(a*100+10*b+c)+(c*100+10*b+a)               ——————————→                101*(a+c)+20*b
  8. '(lngResult\101)                             ——————————→                a+c
  9. '(lngResult Mod 101)/20                      ——————————→                b

  10. '令a=i,则:
  11. '
  12. '100*a                                       ——————————→                100*i
  13. '10*b                                        ——————————→               (lngResult Mod 101)/2
  14. 'c                                           ——————————→               (lngResult \ 101)-i

  15. For i = 1 To (lngResult \ 101)
  16.     If (lngResult \ 101 - 2 * i) = 3 Then
  17.         test = 100 * i + (lngResult Mod 101) / 2 + (lngResult \ 101 - i)
  18.     End If
  19. Next
  20. End Function
复制代码

点击这里给我发消息

7#
发表于 2015-9-25 09:14:26 | 只看该作者
jnne 发表于 2015-9-25 00:19
我还是个高三学生,学的是计算机,但是到现在考老师没教更深的语句。。。
你的问个问题,我应该是没问题, ...

你这个循环次数太多了

点击这里给我发消息

6#
发表于 2015-9-25 09:13:28 | 只看该作者

  1. Public Function CheckNumber()
  2.     Dim i0 As Long  '个位数
  3.     Dim i1 As Long  '十位数
  4.     Dim i2 As Long  '百位数

  5.     '百位最小,个位最大
  6.     '百位的有效范围是 1~(9-3),也就是1~6
  7.     For i2 = 1 To 6
  8.         i0 = i2 + 3 '得到个位数
  9.         i1 = i0 - 1 '得到十位数

  10.         '判断是否符合条件
  11.         If CInt(i2 & i1 & i0) + CInt(i0 & i1 & i2) = 787 Then
  12.             Debug.Print i2 & i1 & i0    '输出结果
  13.         End If
  14.     Next

  15.     Debug.Print "End!"
  16. End Function
复制代码

这里3个数字组合成一个3位数直接用个& 连接了,也可以用数学方法计算得到:i2*100+i1*10+i0

本帖子中包含更多资源

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

x

点评

赞  发表于 2015-9-26 10:05
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-1-25 11:23 , Processed in 0.611771 second(s), 39 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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