def digit_factorials(): result = 0 factorials = [eulerlib.factorial(i) for i in range(10)] for n in range(4 * eulerlib.factorial(8) + 1): digits_of_n = [int(i) for i in str(n)] n_fact = sum([factorials[digit] for digit in digits_of_n]) if n == n_fact: print(n) result += n_fact return result - 3
def compute(): TURNS = 15 # Dynamic programming ways = [[1]] for i in range(1, TURNS + 1): row = [] for j in range(i + 1): temp = 0 if j < i: temp = ways[i - 1][j] * i if j > 0: temp += ways[i - 1][j - 1] row.append(temp) ways.append(row) numer = 0 for i in range(TURNS //2 + 1, TURNS + 1): numer += ways[TURNS][i] denom = eulerlib.factorial(TURNS + 1) return str(denom // numer)
def compute(): TURNS = 15 # Dynamic programming ways = [[1]] for i in range(1, TURNS + 1): row = [] for j in range(i + 1): temp = 0 if j < i: temp = ways[i - 1][j] * i if j > 0: temp += ways[i - 1][j - 1] row.append(temp) ways.append(row) numer = 0 for i in range(TURNS // 2 + 1, TURNS + 1): numer += ways[TURNS][i] denom = eulerlib.factorial(TURNS + 1) return str(denom // numer)
# https://www.nayuki.io/page/project-euler-solutions # https://github.com/nayuki/Project-Euler-solutions # import eulerlib, sys if sys.version_info.major == 2: range = xrange def compute(): # As stated in the problem, 1 = 1! and 2 = 2! are excluded. # If a number has at least n >= 8 digits, then even if every digit is 9, # n * 9! is still less than the number (which is at least 10^n). ans = sum(i for i in range(3, 10000000) if i == factorial_digit_sum(i)) return str(ans) def factorial_digit_sum(n): result = 0 while n >= 10000: result += FACTORIAL_DIGITS_SUM_WITH_LEADING_ZEROS[n % 10000] n //= 10000 return result + FACTORIAL_DIGITS_SUM_WITHOUT_LEADING_ZEROS[n] FACTORIAL_DIGITS_SUM_WITHOUT_LEADING_ZEROS = [sum(eulerlib.factorial(int(c)) for c in str(i)) for i in range(10000)] FACTORIAL_DIGITS_SUM_WITH_LEADING_ZEROS = [sum(eulerlib.factorial(int(c)) for c in str(i).zfill(4)) for i in range(10000)] if __name__ == "__main__": print(compute())
#!/usr/bin/python from eulerlib import factorial from eulerlib import num2List answerL = [] facts = {} for ii in range( 0, 10 ): facts[ii] = factorial( ii ) for ii in range( 3, 999999 ): s = 0 iiL = num2List(ii) for kk in iiL: s += facts[kk] if s == ii: answerL.append( s ) print sum( answerL )
if sys.version_info.major == 2: range = xrange def compute(): # As stated in the problem, 1 = 1! and 2 = 2! are excluded. # If a number has at least n >= 8 digits, then even if every digit is 9, # n * 9! is still less than the number (which is at least 10^n). ans = sum(i for i in range(3, 10000000) if i == factorial_digit_sum(i)) return str(ans) def factorial_digit_sum(n): result = 0 while n >= 10000: result += FACTORIAL_DIGITS_SUM_WITH_LEADING_ZEROS[n % 10000] n //= 10000 return result + FACTORIAL_DIGITS_SUM_WITHOUT_LEADING_ZEROS[n] FACTORIAL_DIGITS_SUM_WITHOUT_LEADING_ZEROS = [ sum(eulerlib.factorial(int(c)) for c in str(i)) for i in range(10000) ] FACTORIAL_DIGITS_SUM_WITH_LEADING_ZEROS = [ sum(eulerlib.factorial(int(c)) for c in str(i).zfill(4)) for i in range(10000) ] if __name__ == "__main__": print(compute())
def compute(): n = eulerlib.factorial(100) ans = sum(map(int, str(n))) return str(ans)
# http://www.nayuki.io/page/project-euler-solutions # https://github.com/nayuki/Project-Euler-solutions # import eulerlib, sys if sys.version_info.major == 2: range = xrange def compute(): # As stated in the problem, 1 = 1! and 2 = 2! are excluded. # If a number has at least n >= 8 digits, then even if every digit is 9, # n * 9! is still less than the number (which is at least 10^n). ans = sum(i for i in range(3, 10000000) if i == factorial_digit_sum(i)) return str(ans) def factorial_digit_sum(n): result = 0 while n >= 10000: result += FACTORIAL_DIGITS_SUM_WITH_LEADING_ZEROS[n % 10000] n //= 10000 return result + FACTORIAL_DIGITS_SUM_WITHOUT_LEADING_ZEROS[n] FACTORIAL_DIGITS_SUM_WITHOUT_LEADING_ZEROS = [sum(eulerlib.factorial(int(c)) for c in str(i)) for i in range(10000)] FACTORIAL_DIGITS_SUM_WITH_LEADING_ZEROS = [sum(eulerlib.factorial(int(c)) for c in str(i).zfill(4)) for i in range(10000)] if __name__ == "__main__": print(compute())
def compute(): n = eulerlib.factorial(100) ans = sum(int(c) for c in str(n)) return str(ans)
#!/usr/bin/python import eulerlib def split(anInt): l = list(str(anInt)) return [int(x) for x in l] if __name__ == '__main__': print sum(split(eulerlib.factorial(100)))
def binomial(n, k): return eulerlib.factorial(n) // (eulerlib.factorial(k) * eulerlib.factorial(n - k))
def problem020(n): return sum(map(int, list(str(factorial(n)))))
#!/usr/bin/python import eulerlib import math if __name__ == '__main__': n = 1000000 nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] nNums = len(nums) answer = list() while len(nums) > 1: f = eulerlib.factorial(nNums - 1) nNums -= 1 tmp = int(math.ceil(float(n) / float(f))) answer.append(nums[tmp - 1]) nums.remove(nums[tmp - 1]) n -= f * (tmp - 1) answer.append(nums[0]) print ''.join(map(str, answer)) eulerlib.factorial(6)