数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
楼主: 天山草

用四种颜色的珠子穿 6 个一串的珠串,有几种不同的穿法?

[复制链接]
 楼主| 发表于 2016-10-16 07:13 | 显示全部楼层
现在大家的意见终于统一了。
Ysu2008 关于环的题目及解答同样也很精彩,需要好好研究一下。

点评

天山草先生,能把四种颜色6颗珠串成的环答案有430种换成5种颜色5颗珠串成的环答案有多少种?  发表于 2016-10-21 11:20
 楼主| 发表于 2016-10-22 22:35 | 显示全部楼层
本帖最后由 天山草 于 2016-10-23 08:02 编辑

“天山草先生,能把四种颜色6颗珠串成的环答案有430种换成5种颜色5颗珠串成的环答案有多少种?”
编程计算,答案是 377 种。
详见王守恩的帖子【5种颜色5颗珠穿成的环,有几种穿法?】
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-10-22 22:49 | 显示全部楼层
本帖最后由 天山草 于 2016-10-22 22:51 编辑

用 VB 写的程序,供参考。

     '有四种颜色的珠子足够多,穿成六个一串的珠子串。不分首尾,有几种方法?
     '等价问题:由 1,2,3,4 构成的六位数有多少个?最小的数是 111111,最大的是444444。如果此数倒转(左一位变个位,左二位变十位,等等),
     '都不等于另一个六位数,共有多少个不同的六位数?
     '编程思路:最小的数是 111111,最大的数是 444444. 从 111111 开始按四进制依次加 1,一直加到444444为止,共有4096个数字。
     '上述 4096 个数字中,有不符合要求的,例如 111112 与 211111,必须去掉一个,这样总的方法数就比 4096 少许多。
     运行结果: 2080

下面是正式程序——

     Private Sub form_Click()              
        Dim a$(4096), b$(4096), aa$(4096)
         k = 0
         mi = "111110"
     For i = 1 To 4096    '从 111111 按四进制逐次加 1,加 4096 次,最后得到 444444 为止。
         mi = mi + 1
         If Mid(mi, 6, 1) = 5 Then Mid(mi, 6, 1) = 1: Mid(mi, 5, 1) = Mid(mi, 5, 1) + 1
         If Mid(mi, 5, 1) = 5 Then Mid(mi, 5, 1) = 1: Mid(mi, 4, 1) = Mid(mi, 4, 1) + 1
         If Mid(mi, 4, 1) = 5 Then Mid(mi, 4, 1) = 1: Mid(mi, 3, 1) = Mid(mi, 3, 1) + 1
         If Mid(mi, 3, 1) = 5 Then Mid(mi, 3, 1) = 1: Mid(mi, 2, 1) = Mid(mi, 2, 1) + 1
         If Mid(mi, 2, 1) = 5 Then Mid(mi, 2, 1) = 1: Mid(mi, 1, 1) = Mid(mi, 1, 1) + 1                  
      k = k + 1
      a(k) = Trim(mi)     '这 4096 个数字存放在 a 数组中,以字串方式存放。
      aa(k) = a(k)          '此后 a 数组中的数字会变化,备份一个到 aa 数组。
      Next i
      
      n = 0
      For k = 1 To 4096       '形成另一个 b 数组,它是 a 数组的“倒置”。
        b(k) = Trim(Mid(a(k), 6, 1) + Mid(a(k), 5, 1) + Mid(a(k), 4, 1) + Mid(a(k), 3, 1) + Mid(a(k), 2, 1) + Mid(a(k), 1, 1))
      Print #1, k; "---"; a(k); "---"; b(k)
      Next k
      
      For k = 1 To 4096    '通过 a 与 b 的对照,将 a 中重复的数作上标记(重复的数换成 0)
        For j = k + 1 To 4096
             If b(k) = a(j) Then a(j) = 0
        Next j      
      Next k
      
      n = 0
      For k = 1 To 4096     '把 a 中重复的数筛选掉
        If a(k) = 0 Then GoTo 10
      n = n + 1
      Print n; "---"; a(k)      
10:  Next k     
      End Sub            

运行结果——
1 ---111111
2 ---111112
3 ---111113
4 ---111114
5 ---111121
6 ---111122
7 ---111123
8 ---111124
9 ---111131
10 ---111132
11 ---111133
12 ---111134
13 ---111141
14 ---111142
15 ---111143
16 ---111144
17 ---111211
18 ---111212
19 ---111213
20 ---111214
21 ---111221
22 ---111222
23 ---111223
24 ---111224
25 ---111231
26 ---111232
27 ---111233
28 ---111234
29 ---111241
30 ---111242
31 ---111243
32 ---111244
33 ---111311
34 ---111312
35 ---111313
36 ---111314
37 ---111321
38 ---111322
39 ---111323
40 ---111324
..............................
2067 ---434244
2068 ---434344
2069 ---434434
2070 ---434444
2071 ---441144
2072 ---441244
2073 ---441344
2074 ---441444
2075 ---442244
2076 ---442344
2077 ---442444
2078 ---443344
2079 ---443444
2080 ---444444
-----------------------------  
回复 支持 1 反对 0

使用道具 举报

发表于 2017-8-28 06:35 | 显示全部楼层
天山草 先生!忙吗?有点想您!
发表于 2017-8-29 17:50 | 显示全部楼层
有一回改了下密码,没有记在纸上,就忘记了。也找不回来了。
现在是只能改个网名,叫天山草@

点评

谢谢!  发表于 2017-8-29 20:22
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2026-5-16 08:47 , Processed in 0.112995 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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