如何找到该数学问题的解决方案?

时间:2019-12-25 21:51:33

标签: python math

我需要有关置换的数学问题的帮助。任务是:

  

有多少个四位数的偶数,没有数字出现一次。

我走了这么远:

   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)

2 个答案:

答案 0 :(得分:3)

我们还可以使用数学方法解决此问题,而无需检查所有可能的数字(一种强力手段,不适合更广泛的范围)

我们可以从5个变体中选择第四个数字(偶数)
我们可以从9个变体中选择第三个数字(不包括使用的数字)
我们可以从8个变体中选择第二个数字(不包括使用的数字)
我们可以从7个变体中选择第一个数字(不包括使用的数字)

因此,我们有5*9*8*7 = 2520个具有不同数字的变体。
但是其中一些是三位数字,因为第一位是零。我们必须排除它们。
4*8*7 = 224个这样的数字,最终结果是:

  2296 variants = 2520 - 224

答案 1 :(得分:2)

  1. 要仅生成偶数,您可以只使用2

    for c in range(1000, 9999, 2)
    
  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)