078 Coin partitions.jl 610 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #!/usr/bin/julia
  2. # Author: Daniel "Trizen" Șuteu
  3. # License: GPLv3
  4. # Website: https://github.com/trizen
  5. # https://projecteuler.net/problem=78
  6. # Runtime: 0.406s
  7. function coin_partitions()
  8. n = 2
  9. p = [1]
  10. while(true)
  11. i = 0
  12. q = 2
  13. push!(p, 0)
  14. while q <= n
  15. p[n] += (i % 4 > 1 ? -1 : 1) * p[n-q+1]
  16. p[n] %= 1000000
  17. i += 1
  18. j = div(i, 2) + 1
  19. isodd(i) && (j *= -1)
  20. q = div(j * (3j - 1), 2) + 1
  21. end
  22. p[n] == 0 && break
  23. n += 1
  24. end
  25. n - 1
  26. end
  27. println(coin_partitions())