Office中國(guó)論壇/Access中國(guó)論壇

 找回密碼
 注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

12345下一頁(yè)
返回列表 發(fā)新帖
查看: 23499|回復(fù): 47
打印 上一主題 下一主題

41期電腦報(bào)編程題目

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2005-10-20 19:56:00 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
編程題目:

有一個(gè)九位數(shù),它由1到9著9個(gè)數(shù)字組成,每個(gè)數(shù)字剛好只出現(xiàn)一次。這個(gè)九位數(shù)的前兩位能被2整除,前三位能被3整除。。。。前N位能被N整除(2<=n<=9),整個(gè)九位數(shù)能被9整除。請(qǐng)編程找出這樣的九位數(shù)。



游客,如果您要查看本帖隱藏內(nèi)容請(qǐng)回復(fù)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 分享淘帖 訂閱訂閱
2#
發(fā)表于 2005-10-20 22:23:00 | 只看該作者
SEE
3#
發(fā)表于 2005-10-21 02:51:00 | 只看該作者
看看, 答案
4#
發(fā)表于 2005-10-21 16:19:00 | 只看該作者
呵呵,trynew對(duì)文本操作情有獨(dú)鐘,借鑒思路修改后速度提高十二倍,在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

[此貼子已經(jīng)被作者于2005-10-21 8:50:57編輯過(guò)]

5#
發(fā)表于 2005-10-21 19:03:00 | 只看該作者
電腦比較慢,Cerelon 1.2G環(huán)境,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
6#
發(fā)表于 2005-10-21 19:31:00 | 只看該作者
經(jīng)過(guò)LucasLynn 的超強(qiáng)分析,進(jìn)行改進(jìn),時(shí)間為 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
7#
發(fā)表于 2005-10-22 01:14:00 | 只看該作者
look look
8#
發(fā)表于 2005-11-17 17:03:00 | 只看該作者
OK
9#
發(fā)表于 2006-1-23 02:51:00 | 只看該作者
for "以下內(nèi)容只有回復(fù)后才可以瀏覽"
10#
發(fā)表于 2006-2-2 17:50:00 | 只看該作者
看看
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則

QQ|站長(zhǎng)郵箱|小黑屋|手機(jī)版|Office中國(guó)/Access中國(guó) ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2024-10-23 06:21 , Processed in 0.111345 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表