ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 5316|回复: 11

[Excel 程序开发] [开_87]数念珠问题改编

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-2-22 15:17 | 显示全部楼层 |阅读模式

题目:有一个和尚,他有两串佛珠,每串七七49颗,都按1~49的顺序编号,他念经有个怪癖,他每天念经前要把其中一串佛珠拆开散放进一个纸箱。摇一摇后从中摸出一颗珠子,看看上面的号码,比如说是23号,然后拿起另一串佛珠从第1号开始数,数到第23颗珠子(即23号珠子)便把它拿出来,接着又从24号珠子开始数,数到第22颗(即45号珠子)时也把它拿出来,并把先拿出来的那颗珠子(即23号珠子)放到该位置。接着又从47号珠子开始数,数到第21颗(即18号珠子,因为珠子串成一串,49号与1号是连着的)时也把它拿出来,并把先拿出来的那颗珠子(即45号珠子)放到该位置。。。。。。如此循环,重复上面的做法后,最后取出的那个珠子的号码是多少?请大家编程帮他解决。
注意:规律是每次数的次数比上一次减1,当次数减为0时停止,拿出来的珠子要放回到新的位置,就是说这串佛珠的总数始终保持不变。
要求:最好“佛珠总数”及“摸出的佛珠号码”可人工输入,根据速度的快慢评价代码的优劣,运行时间以版主电脑为准,为了便于比较运行时间,佛珠总数限定为100摸出的佛珠号码限定为2000。
本题在vba8的基础上改变,希望qlz110别告我侵犯版权

单选投票, 共有 3 人参与投票

距结束还有: 3148 天6 分钟

您所在的用户组没有投票权限

TA的精华主题

TA的得分主题

发表于 2006-2-22 15:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

有趣,得仔细想想,看有什么不同?

另:在我没有收到版权费and你会因此发财之前,我不会告你的侵权的,呵呵。

TA的精华主题

TA的得分主题

发表于 2006-2-22 16:44 | 显示全部楼层

取出第45颗换为第23颗后,是否应从第46颗开始数,第46颗为1?

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-2-22 17:14 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
以下是引用spritezt在2006-2-22 16:44:50的发言:

取出第45颗换为第23颗后,是否应从第46颗开始数,第46颗为1?

TA的精华主题

TA的得分主题

发表于 2006-2-22 17:31 | 显示全部楼层

23 45 17 38 8 27 44 11 27 41 5 17 29 39 48 7 14 20 26 30 33 35 36

Qp1TSGVd.txt (685 Bytes, 下载次数: 17)

楼主最好告诉答案,这样我才好知道自己的代码有没问题,现在我不发表评论,我的结果是36。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-2-22 17:34 | 显示全部楼层

我的答案也是36,Long_III好快呀

我的答案

p21RTHkw.rar (9.29 KB, 下载次数: 28)


我的答案有点画蛇添足,我本来是想出一道需要用链表方式解决的问题,不过现在我发现,这道题根本用不着。

[此贴子已经被作者于2006-2-22 21:45:28编辑过]

TA的精华主题

TA的得分主题

发表于 2006-2-22 22:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
偶的答案也是36,程序见附件 dvsQovuU.txt (578 Bytes, 下载次数: 8)
[此贴子已经被作者于2006-2-22 23:00:08编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-2-22 23:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

非常好,实际上后来我也想到了,这样这道题实际挺简单,在楼上基础上还可少一道循环。

Function aa(Total_Num As Integer, Select_Num As Integer) As Integer
Dim Pro() As Integer
ReDim Pro(1 To Total_Num)

For i = 1 To Total_Num - 1
If i < Select_Num Then
Pro(i) = i
Else
Pro(i) = i + 1
End If
Next i

i = Select_Num - 1
r = Select_Num - 1

Do Until r = 0
' For j = 1 To r
' If i = Total_Num - 1 Then
' i = 1
' Else
' i = i + 1
' End If
' Next j
i = ((i + r - 1) Mod (Total_Num - 1)) + 1
k = Pro(i)
Pro(i) = Select_Num
Select_Num = k
r = r - 1
Loop

aa = Select_Num
End Function

TA的精华主题

TA的得分主题

发表于 2006-2-24 08:47 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-2-24 22:09 | 显示全部楼层
出差去了才回来,累了今天不做了!等楼主出另外的题目再做吧!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-25 15:10 , Processed in 0.056988 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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