Thử thách
Cho một số nguyên, n
như là đầu vào trong đó 36 >= n >= 2
, xuất ra có bao nhiêu số Lynch-Bell trong cơ sở n
.
Đầu ra phải ở cơ sở 10.
Số Lynch-Bell
Số là số Lynch-Bell nếu:
- Tất cả các chữ số của nó là duy nhất (không lặp lại các chữ số)
- Số này chia hết cho mỗi chữ số của nó
- Nó không chứa số 0 là một trong các chữ số của nó
Vì, tất cả các chữ số phải là duy nhất và bạn có một tập hợp hữu hạn các số có một chữ số trong mỗi cơ sở, có một số hữu hạn các số Lynch-Bell.
Ví dụ: trong cơ sở 2 chỉ có một số Lynch-Bell 1
, vì tất cả các số khác đều lặp lại các chữ số hoặc chứa 0.
Ví dụ
Input > Output
2 > 1
3 > 2
4 > 6
5 > 10
6 > 10
7 > 75
8 > 144
9 > 487
10 > 548
Mathematica Online đã hết bộ nhớ trên cơ sở 10. Bạn có thể sử dụng đoạn mã sau để tạo mã của riêng mình:
Do[Print[i," > ",Count[Join@@Permutations/@Rest@Subsets@Range[#-1],x_/;And@@(x\[Divides]FromDigits[x,#])]&[i]],{i,10,36,1}]
Chiến thắng
Mã ngắn nhất trong byte thắng.
>10
?
f(36)
. Thực hiện một thử thách mã nhanh nhất dựa trên điều này có lẽ sẽ thú vị.