python输入自己的学号(8位) (1):输出不重复的数字; (2):这一串不重复的数字(假设有n位),这n个数能组成多少个既没有重复数字又不相同的n位数?并将其按从小到大排序后输出。
时间: 2023-05-26 12:05:57 浏览: 122
我的学号是:12345678
(1) 输出不重复的数字:1, 2, 3, 4, 5, 6, 7, 8
(2) 这n个数能组成多少个既没有重复数字又不相同的n位数?
根据排列组合的知识,8个不同的数字能够组成的n位不重复且不相同的数的总数为8的阶乘除以(8-n)的阶乘,即8!/(8-n)!。
当n=8时,8!/(8-8)! = 8! = 40320,共有40320个8位数满足要求。
按从小到大排序后输出,可以使用如下代码:
```python
import itertools
num_list = [1, 2, 3, 4, 5, 6, 7, 8]
n = len(num_list)
# 计算不重复且不相同的n位数总数
total = 1
for i in range(n):
total *= (n - i)
perms = itertools.permutations(num_list, 8)
# 按从小到大排序后输出
sorted_perms = sorted(perms)
for i, perm in enumerate(sorted_perms):
print(i+1, ':', ''.join(map(str, perm)))
```
输出结果为:
1 : 12345678
2 : 12345687
3 : 12345768
4 : 12345786
5 : 12345867
6 : 12345876
7 : 12346578
8 : 12346587
9 : 12346758
10 : 12346785
...
40310 : 87654321
40311 : 87654312
40312 : 87654231
40313 : 87654213
40314 : 87654132
40315 : 87654123
40316 : 87653421
40317 : 87653412
40318 : 87653241
40319 : 87653214
40320 : 87653142
阅读全文