本帖最后由 FF7 于 2012-5-3 10:12 编辑
请大家在完成下面的题目的同时,尽量精炼自己的代码,开贴后我们将根据大家的代码,评选出最优秀的代码作品,给以另外的加分。
优秀作品:第一,代码格式规范,整洁;第二,代码简练;第三,答案正确。
第一题:唐僧师徒摘桃子(基础) 2分,优秀另加。- Rem 第一题:唐僧师徒摘桃子(基础)
- '解题思路:因为猪八戒的桃子除以3多一个,沙僧除以4多一个,孙悟空除以5多一个,所以他们手中的桃子数目肯定是3,4,5的公倍数+1.
- '而3,4,5的最小公倍数是3*4*5。那么3,4,5的公倍数就应该是3*4*5* n (n表示自然数)
- '解法一:口算
- '桃子数目是120到140之间。所以60*2 +1=121即为最后结果
- Function TaoZi001() As Integer
- TaoZi001 = 3 * 4 * 5 * 2 + 1
- End Function
- '解法二:Do Loop循环,n表示3,4,5的第n个公倍数
- Function TaoZi() As Long
- Dim n As Long
- Do Until TaoZi > 120 And TaoZi < 140
- n = n + 1
- TaoZi = 3 * 4 * 5 * n + 1
- Loop
- End Function
- '解法三:For循环1,n表示3,4,5的第n个公倍数
- Function TaoZi002() As Long
- Dim n As Long
- For n = 1 To 1000
- TaoZi002 = 3 * 4 * 5 * n + 1
- If TaoZi002 > 120 And TaoZi002 < 140 Then Exit For
- Next
- End Function
- '解法四:For循环2,以公倍数为循环条件
- Function TaoZi003() As Long
- Dim n As Long
- For n = 3 * 4 * 5 To 140 Step 3 * 4 * 5
- TaoZi003 = n + 1
- If TaoZi003 > 120 And TaoZi003 < 140 Then Exit For
- Next
- End Function
复制代码
第二题:剪指甲(学习和思考) 4分,优秀另加。
- Rem 第二题:剪指甲(思考)
- '解题思路:1分钟剪5个指甲,那么m分钟就可以剪m*5个,但是老张连脚趾头一起算都只有20个指甲,所以当m>4的时候他仍然只能剪20个指甲。
- '思路一,先判断时间是否小于5分钟,小于5分钟则是m*5,否则就是20个
- Function SuperCuter(ByVal m As Integer) As Integer
- If m < 5 Then SuperCuter = m * 5 Else SuperCuter = 20
- End Function
复制代码
第三题:头疼的卡片(进阶) 8分,优秀另加。
- Rem 第三题:头疼的卡片(进阶)
- Rem 第一问:所有可能的组合数
- '解题思路:因为是一个两位数,所以第一位不能为0,那么卡片的正反面一共是6个数字,0,1,2,3,4,5
- '所以,十位数不能为0,六位数字一共有5种可能1,2,3,4,5
- '任意确定1,2,3,4,5中一位数字为十位数,比如3,那么在剩下的数字中,跟3在同一张卡片上的2不可能出现,剩下的0,1,4,5都可以出现,所以有4种可能。
- '所以两位数的总共可能为:5*4 = 20种。
- Function TotalZuHe()
- TotalZuHe = 5 * 4
- End Function
- Rem 第二问:列出所有可能出现的两位数
- '解题关键:实际0,1;2,3;4,5首先存在一个分组,分组中的数字不能同时出现
- Sub theAllnumber()
- Dim arr, m As Integer, n As Integer
- arr = Array("a", "a", "b", "b", "c", "c") '首先利用数组对0,1;2,3;4,5分别分组为a,b,c。所以此时a(0)="a",a(1)="a";a(2)=a(3) = "b",a(4)=a(5)="c"
- For m = 1 To 5 '十位数不能为0
- For n = 0 To 5 '个位数可以为0到5的任何数
- '这里的判断条件arr(m)<>arr(n)就是为了防止个位数和十位数不能是同一张卡片上的
- If arr(m) <> arr(n) Then Cells(15 + m, n + 3) = m & n '列出所有组合
- Next n, m
- End Sub
复制代码
提示:附件已经于2012年4月26日下午17:17分进行修订,适当降低了第三题的难度。 原帖中指定了列举所有可能数字的区域,修改后的题目取消对区域的限制。只要把结果列举出来即可。一个单元格一个数字即可!
19:32分:第三题第二问取消对区域的限制,意思是你排成一行也可以,排成一列也可以,排成一个方阵也可以,乱七八糟无规律的排也可以,只要把所有组合列举在15行以下任意的单元格内即可。
|