只有228個, 賣女孩的火柴的答案錯誤, 因為她把111也算進去了
(他列的數列102, 105, 108 下一個就是111, 不合題意)
我晚點算給你看:\
我先給你數列表:
102, 105, 108, 120, 123, 126, 129, 132, 135, 138, 147, 150, 153, 156, 159, 162, 165, 168, 174, 180, 183, 186, 189, 192, 195, 198, 201, 204, 207, 210, 213, 216, 219, 231, 234, 237, 240, 243, 246, 249, 258, 261, 264, 267, 270, 273, 276, 279, 285, 291, 294, 297, 306, 309, 312, 315, 318, 321, 324, 327, 342, 345, 348, 351, 354, 357, 360, 369, 372, 375, 378, 381, 384, 387, 390, 396, 402, 405, 408, 417, 420, 423, 426, 429, 432, 435, 438, 450, 453, 456, 459, 462, 465, 468, 471, 480, 483, 486, 489, 492, 495, 498, 501, 504, 507, 510, 513, 516, 519, 528, 531, 534, 537, 540, 543, 546, 549, 561, 564, 567, 570, 573, 576, 579, 582, 591, 594, 597, 603, 609, 612, 615, 618, 621, 624, 627, 630, 639, 642, 645, 648, 651, 654, 657, 672, 675, 678, 681, 684, 687, 690, 693, 702, 705, 708, 714, 720, 723, 726, 729, 732, 735, 738, 741, 750, 753, 756, 759, 762, 765, 768, 780, 783, 786, 789, 792, 795, 798, 801, 804, 807, 810, 813, 816, 819, 825, 831, 834, 837, 840, 843, 846, 849, 852, 861, 864, 867, 870, 873, 876, 879, 891, 894, 897, 903, 906, 912, 915, 918, 921, 924, 927, 930, 936, 942, 945, 948, 951, 954, 957, 960, 963, 972, 975, 978, 981, 984, 987
更新: 算法如下
先根據10個數字分別除3的餘數分為3組
A組 {0, 3, 6, 9} 餘數 0
B組 {1, 4, 7} 餘數 1
C組 {2, 5, 8} 餘數 2
3的倍數的特點是所有位值和也是3, 表示位值除3後的餘數和也要是3的倍數,
即餘數和是0, 3, 6 (沒9, 因為餘數最大是2, 最大和是2+2+2=6)
餘數為 000 的組合數:
C(3, 1) x P(3, 2) = 18,
先在{3, 6, 9} 3個數中選出一個作為百位數C(3, 1), 再從A組剩下的相異數中抽出兩個作組合P(3, 2)
餘數為 012 的組合數:
4 x 3 x 3 x 3! - 3 x 3 x2! =198
先算出從各組抽一數排序的組合數4(A組的選擇數) x 3(B組的選擇數) x 3(C組的選擇數) x 3!(掉次序的組合數)
再減回以零開頭的組合數3 x 3 x2!
餘數為 111 的組合數: 3! = 3 x 2 x 1 = 6
餘數為 222 的組合數: 3! = 3 x 2 x 1 = 6
總組合數 = 18 + 198 + 6 + 6 = 228
然後以下是我用來產生列表的python程式碼
lst = [3*i for i in range(34, 333) if int(3*i/100) != int(3*i%100/10) and 3*i%10 != int(3*i%100/10) and int(3*i/100) != 3*i%10]
print (lst)
print (len(lst))