792 Too Many Twos.py 561 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #!/usr/bin/python
  2. # Too Many Twos
  3. # https://projecteuler.net/problem=792
  4. # See also:
  5. # https://oeis.org/A059304
  6. from math import comb
  7. def nu_2(n):
  8. r = 0
  9. while n % 2 == 0:
  10. n //= 2
  11. r += 1
  12. return r
  13. def S(n):
  14. result = 0
  15. for k in range(1, n + 1):
  16. result += (-2)**k * comb(2 * k, k)
  17. return result
  18. def u(n):
  19. return nu_2(3 * S(n) + 4)
  20. def U(N):
  21. return sum(u(n**3) for n in range(1, N + 1))
  22. # Calculate U(10^4)
  23. #result = U(10**4)
  24. result = U(5) #=> 241
  25. print(result)
  26. # U(10) = 3070
  27. # U(16) = 18576