094 Almost equilateral triangles.sf 586 B

123456789101112131415161718192021222324252627282930
  1. #!/usr/bin/ruby
  2. # Author: Trizen
  3. # Date: 17 August 2016
  4. # Translated: 21 March 2023
  5. # https://github.com/trizen
  6. # https://projecteuler.net/problem=94
  7. # Runtime: 0.256s
  8. var sum = 0
  9. var limit = 1_000_000_000
  10. for (var n = 1; true; ++n) {
  11. var x = ((((7 - 4*sqrtQ(3))**n) + (7 + 4*sqrtQ(3))**n + 1) / 3)
  12. var y = (((sqrtQ(3) + 2)*(7 - 4*sqrtQ(3))**(n+1) - (sqrtQ(3) - 2)*(7 + 4*sqrtQ(3))**(n+1) - 1) / 3)
  13. var p1 = (3*x + 1)
  14. var p2 = (3*y - 1)
  15. break if ((p1 > limit) && (p2 > limit))
  16. sum += p1 if (p1 <= limit)
  17. sum += p2 if (p2 <= limit)
  18. }
  19. say sum.real