Office中国论坛/Access中国论坛

标题: 41期电脑报编程题目 [打印本页]

作者: Trynew    时间: 2005-10-20 19:56
标题: 41期电脑报编程题目
编程题目:

有一个九位数,它由1到9着9个数字组成,每个数字刚好只出现一次。这个九位数的前两位能被2整除,前三位能被3整除。。。。前N位能被N整除(2<=n<=9),整个九位数能被9整除。请编程找出这样的九位数。




作者: zxclen    时间: 2005-10-20 22:23
SEE
作者: xinbao    时间: 2005-10-21 02:51
看看, 答案
作者: 海狸先生    时间: 2005-10-21 16:19
呵呵,trynew对文本操作情有独钟,借鉴思路修改后速度提高十二倍,在0.7毫秒左右

Public Sub mNumTest(Optional Num As Long = 0, Optional N As Integer = 1)

Static ik(1 To 9) As Boolean

Dim i As Integer

For i = 1 To 9

   If Not ik(i) Then

      If (10 * Num + i) Mod N = 0 Then

         ik(i) = True

         If N = 9 Then

            Debug.Print 10 * Num + i

         Else

            mNumTest 10 * Num + i, N + 1

         End If

         ik(i) = False

      End If

   End If

Next

End Sub

[此贴子已经被作者于2005-10-21 8:50:57编辑过]


作者: LucasLynn    时间: 2005-10-21 19:03
电脑比较慢,Cerelon 1.2G环境,1.422毫秒

Option Compare Database

Option Explicit

Dim N(8) As Integer

Public Sub Calc()

    Dim i As Integer

   

    Dim t1 As Single

    t1 = Timer

   

    For i = 1 To 1000

        N(0) = 5

        N(1) = 1

        N(2) = 3

        N(3) = 7

        N(4) = 9

        N(5) = 2

        N(6) = 4

        N(7) = 6

        N(8) = 8

        

        P1379

    Next i

   

    Debug.Print Timer - t1

End Sub

Private Sub P1379(Optional x As Integer = 1)

    Dim y As Integer

    Dim tmp As Integer

   

    If x = 4 Then

        P2468

        Exit Sub

    Else

        P1379 x + 1

        For y = x + 1 To 4

             tmp = N(x)

             N(x) = N(y)

             N(y) = tmp

            

             P1379 x + 1

            

             N(y) = N(x)

             N(x) = tmp

        Next y

    End If

End Sub

Private Sub P2468(Optional x As Integer = 5)

    Dim y As Integer

    Dim tmp As Integer

   

    If x = 8 Then

        If Check Then

            'Debug.Print N(1) & N(5) & N(2) & N(6) & N(0) & N(7) & N(3) & N(8) & N(4)

        End If

        Exit Sub

    Else

        P2468 x + 1

        For y = x + 1 To 8

             tmp = N(x)

             N(x) = N(y)

             N(y) = tmp

            

             P2468 x + 1

            

             N(y) = N(x)

             N(x) = tmp

        Next y

    End If

End SubPrivate Function Check() As Boolean

    If (N(1) + N(5) + N(2)) Mod 3 <> 0 Then Exit Function    '3

    If (N(2) * 10 + N(6)) Mod 4 <> 0 Then Exit Function      '4

    If (N(1) + N(5) + N(2) + N(6) + N(7)) Mod 3 <> 1 Then Exit Function '6

    If (N(7) * 100 + N(3) * 10 + N(8)) Mod 8 <> 0 Then Exit Function '8

    If CLng(N(1) & N(5) & N(2) & N(6) & 5 & N(7) & N(3)) Mod 7 <> 0 Then Exit Function '7

    Check = True

End Function

作者: 海狸先生    时间: 2005-10-21 19:31
经过LucasLynn 的超强分析,进行改进,时间为 0.42毫秒Public Sub mNumTest(Optional Num& = 0, Optional N% = 1)

Static ik(1 To 9) As Boolean

Dim i%

For i = 1 - (N Mod 2 = 0) To 9 + (N Mod 2 = 0) Step 2

   If Not ik(i) Then

      If (10 * Num + i) Mod N = 0 Then

         ik(i) = True

         If N = 9 Then

            Debug.Print 10 * Num + i

         Else

            mNumTest 10 * Num + i, N + 1

         End If

         ik(i) = False

      End If

   End If

Next

End Sub

作者: george    时间: 2005-10-22 01:14
look look
作者: lou2003    时间: 2005-11-17 17:03
OK
作者: Dghost    时间: 2006-1-23 02:51
for "以下内容只有回复后才可以浏览"
作者: glw    时间: 2006-2-2 17:50
看看
作者: dongmenzha    时间: 2006-2-8 01:26
看看
作者: lizigui    时间: 2006-2-15 13:32
see
作者: dongmenzha    时间: 2006-2-15 16:42
那个数组用的好啊
作者: xjliyuehua    时间: 2006-2-15 17:17
ok
作者: tleyy    时间: 2006-2-15 22:43
看看
作者: speed1976    时间: 2006-3-5 04:54
看天书的来了。
作者: hol    时间: 2006-3-5 21:18
有意思哦!
作者: woftfox    时间: 2006-3-9 02:40
好看一下.
作者: laiguiyou    时间: 2006-4-7 02:22
look




作者: 蓝白云    时间: 2006-4-24 22:27

作者: 轻风    时间: 2006-4-24 22:30
看不懂也要看
作者: shable    时间: 2006-4-25 06:05
kk
作者: shable    时间: 2006-4-25 06:07
sf?
作者: nxjswt    时间: 2006-7-3 07:09
改革感
作者: 梦想自由    时间: 2006-7-19 06:42
不错啊.
作者: Forward123    时间: 2006-12-26 20:55
标题: Let me see
Let me see
作者: Forward123    时间: 2006-12-26 20:59
摞出黎睇下
作者: cjh-16    时间: 2007-8-7 13:15
dddddddddddddddd
作者: 咱家是猫    时间: 2008-3-10 11:59
看这些头都会大.不过也要看.
作者: zcc    时间: 2008-4-10 13:39
标题: 谁想出来的题目
不错啊
作者: zcc    时间: 2008-4-10 14:02
标题: 回复 6# 的帖子
强悍
作者: zhaoxyong    时间: 2008-4-16 14:07
标题: 看一下
看一下
作者: flew0214    时间: 2008-6-6 11:27
这个问题高手级了。。
作者: 7777777    时间: 2008-6-21 23:08
看看DDD
作者: zyz218    时间: 2008-7-14 16:18
不错不错
作者: friendship    时间: 2008-9-2 21:09
hehe! xuexi!
作者: botjoe    时间: 2008-9-20 13:24
good
作者: yanwei82123300    时间: 2009-4-1 18:32
看看,
作者: AKKBK    时间: 2009-6-25 14:08
救命题啊
作者: 58217155    时间: 2009-6-25 14:59
到底能看哇??
作者: wingte    时间: 2009-7-9 15:25
没看懂。。。
作者: chenyingfengsx    时间: 2009-7-9 15:29
ddd
作者: xjb_test    时间: 2009-7-14 22:14
学习一下
作者: ssangcry    时间: 2009-8-25 11:51
看看谢谢啦
作者: scaler    时间: 2010-2-3 21:14
哈哈,膜拜中……
作者: accesswj    时间: 2012-3-28 21:55
kookokkookok
作者: latelord    时间: 2012-5-15 20:12
难吗?
作者: dfang    时间: 2012-5-15 21:01





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3