|
|
我用 VB 编程来凑个热闹。
' 由 1,3,5,7,8,9 构成的四位数有多少个(各位上的数码不得重复)?如果从小到大排列,第 104 个是什么数?
' 编程思路:最小的数是 1357,最大的数是 9875. 从 1357 开始依次加 1,若不合要求则淘汰,合要求的依次登记在册。
Private Sub form_Click()
Open "由 1,3,5,7,8,9 构成的四位数有多少个.txt" For Output As 1
k = 0
For i = 1357 To 9875
mi = Trim(Str(i)) '换成串
If Mid(mi, 1, 1) = Mid(mi, 2, 1) Or Mid(mi, 1, 1) = Mid(mi, 3, 1) Or Mid(mi, 1, 1) = Mid(mi, 4, 1) Or _
Mid(mi, 2, 1) = Mid(mi, 3, 1) Or Mid(mi, 2, 1) = Mid(mi, 4, 1) Or Mid(mi, 3, 1) = Mid(mi, 4, 1) Then GoTo 222
For j = 1 To 4
If Mid(mi, j, 1) <> 1 And Mid(mi, j, 1) <> 3 And Mid(mi, j, 1) <> 5 And Mid(mi, j, 1) <> 7 And _
Mid(mi, j, 1) <> 8 And Mid(mi, j, 1) <> 9 Then GoTo 222
Next j
k = k + 1
Print k; "---"; mi
Print #1, k; "---"; mi
222: Next i
Close
End Sub
----------------------------------------------------------------
运行结果:
1 ---1357
2 ---1358
3 ---1359
4 ---1375
5 ---1378
6 ---1379
7 ---1385
8 ---1387
9 ---1389
10 ---1395
11 ---1397
12 ---1398
13 ---1537
14 ---1538
15 ---1539
16 ---1573
17 ---1578
18 ---1579
19 ---1583
20 ---1587
21 ---1589
22 ---1593
23 ---1597
24 ---1598
25 ---1735
26 ---1738
27 ---1739
28 ---1753
29 ---1758
30 ---1759
31 ---1783
32 ---1785
33 ---1789
34 ---1793
35 ---1795
36 ---1798
37 ---1835
38 ---1837
39 ---1839
40 ---1853
41 ---1857
42 ---1859
43 ---1873
44 ---1875
45 ---1879
46 ---1893
47 ---1895
48 ---1897
49 ---1935
50 ---1937
51 ---1938
52 ---1953
53 ---1957
54 ---1958
55 ---1973
56 ---1975
57 ---1978
58 ---1983
59 ---1985
60 ---1987
61 ---3157
62 ---3158
63 ---3159
64 ---3175
65 ---3178
66 ---3179
67 ---3185
68 ---3187
69 ---3189
70 ---3195
71 ---3197
72 ---3198
73 ---3517
74 ---3518
75 ---3519
76 ---3571
77 ---3578
78 ---3579
79 ---3581
80 ---3587
81 ---3589
82 ---3591
83 ---3597
84 ---3598
85 ---3715
86 ---3718
87 ---3719
88 ---3751
89 ---3758
90 ---3759
91 ---3781
92 ---3785
93 ---3789
94 ---3791
95 ---3795
96 ---3798
97 ---3815
98 ---3817
99 ---3819
100 ---3851
101 ---3857
102 ---3859
103 ---3871
104 ---3875
……………………
359 ---9873
360 ---9875
。。。。。。。。。。。。。。。。。。。。。。
可见第 104 个数是 3875。
|
|