719 Number Splitting.jl 583 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #!/usr/bin/julia
  2. # Daniel "Trizen" Șuteu
  3. # Date: 01 July 2020
  4. # https://github.com/trizen
  5. # Number Splitting
  6. # https://projecteuler.net/problem=719
  7. # Runtime: 2.054s
  8. function isok(n::Int64, m::Int64)
  9. (m < n) && return false
  10. (m == n) && return true
  11. t = 10
  12. while (t < m)
  13. q,r = divrem(m, t)
  14. (r < n) && isok(n - r, q) && return true
  15. t *= 10
  16. end
  17. return false
  18. end
  19. function p719(upto)
  20. total = 0
  21. for n in 2:upto
  22. if isok(n, n*n)
  23. total += n*n
  24. end
  25. end
  26. return total
  27. end
  28. println(p719(10^6))