我需要有关置换的数学问题的帮助。任务是:
有多少个四位数的偶数,没有数字出现一次。
我走了这么远:
gerade = set()
for c in range(1000,9999):
for d in str(c):
if int(d) %2 !=0:
gerade.add(c)
if
break
print (c)
答案 0 :(得分:3)
我们还可以使用数学方法解决此问题,而无需检查所有可能的数字(一种强力手段,不适合更广泛的范围)
我们可以从5个变体中选择第四个数字(偶数)
我们可以从9个变体中选择第三个数字(不包括使用的数字)
我们可以从8个变体中选择第二个数字(不包括使用的数字)
我们可以从7个变体中选择第一个数字(不包括使用的数字)
因此,我们有5*9*8*7 = 2520
个具有不同数字的变体。
但是其中一些是三位数字,因为第一位是零。我们必须排除它们。
有4*8*7 = 224
个这样的数字,最终结果是:
2296 variants = 2520 - 224
答案 1 :(得分:2)
要仅生成偶数,您可以只使用2
for c in range(1000, 9999, 2)
然后到count unique digits,您可以使用set
并检查长度,如果它们相同,则保留值
gerade = set()
for c in range(1000, 9999, 2):
if len(str(c)) == len(set(str(c))):
gerade.add(c)