示例#1
0
文件: 024.py 项目: ddk-grad/Euler
                    012   021   102   120   201   210

What is the millionth lexicographic permutation of the digits 0, 1, 2, 3,
4, 5, 6, 7, 8 and 9?
"""

import euler_utils as utils

digits = [chr(i+48) for i in range(0,10)]

count = 0
permutation = []

for position in range(9,0,-1):
  #we could have just divided here, it will straightaway give us the index
  factorial = utils.factorial_of(position)
  for i in range(len(digits)):
    count += factorial
    if count >= 1000000:
      count -= factorial 
      permutation.append(digits[i])
      digits.remove(digits[i])
      break

permutation = permutation + digits

print ''.join(permutation)



示例#2
0
文件: 034.py 项目: ddk-grad/Euler
"""
Project Euler Problem 34
========================

145 is a curious number, as 1! + 4! + 5! = 1 + 24 + 120 = 145.

Find the sum of all numbers which are equal to the sum of the factorial of
their digits.

Note: as 1! = 1 and 2! = 2 are not sums they are not included.
"""

import euler_utils as utils

factorials = [utils.factorial_of(i) for i in range(0,10)]

total_sum = 0

for i in range(10,7*utils.factorial_of(9)):
    if i == sum([factorials[int(d)] for d in str(i)]):
        total_sum += i

print total_sum