125 Palindromic sums.jl 1019 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #!/usr/bin/julia
  2. # Author: Daniel "Trizen" Șuteu
  3. # License: GPLv3
  4. # Website: https://github.com/trizen
  5. # https://projecteuler.net/problem=125
  6. # Runtime: 3.127s
  7. @inline function is_csquare(n::Int64)
  8. s = isqrt(n)
  9. for i in 1:s-1
  10. sum = i^2
  11. for j in i+1:s
  12. sum += j^2
  13. sum > n && break
  14. sum == n && return true
  15. end
  16. end
  17. return false
  18. end
  19. function count_sum(limit::Int64)
  20. sum = 0
  21. for i in 1:9
  22. if is_csquare(i)
  23. sum += i
  24. end
  25. end
  26. i = 1
  27. while true
  28. s = string(i)
  29. r = reverse(s)
  30. p = s * r
  31. k = parse(Int64, p)
  32. k >= limit && break
  33. if is_csquare(k)
  34. sum += k
  35. end
  36. for j in 0:9
  37. p = s * string(j) * r
  38. k = parse(Int64, p)
  39. k >= limit && break
  40. if is_csquare(k)
  41. sum += k
  42. end
  43. end
  44. i += 1
  45. end
  46. return sum
  47. end
  48. println(count_sum(100000000))