235 An Arithmetic Geometric sequence.pl 621 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #!/usr/bin/perl
  2. # Daniel "Trizen" Șuteu
  3. # License: GPLv3
  4. # Date: 27 September 2017
  5. # https://github.com/trizen
  6. # https://projecteuler.net/problem=235
  7. # Runtime: 0.009s
  8. use 5.010;
  9. use strict;
  10. use warnings;
  11. #use Math::AnyNum qw(:overload);
  12. my $n = 5000;
  13. my $u = -600000000000;
  14. my $r1 = 1;
  15. my $r2 = 2;
  16. while ($r1 <= $r2) {
  17. my $r = ($r1 + $r2) / 2;
  18. my $v = ((3*($n-299) * $r**$n) - (3*($n-300) * $r**($n+1)) - 900*$r + 897)/($r-1)**2 - $u;
  19. if (abs($r1 - $r2) < 1e-14) {
  20. printf("%.12f\n", $r1);
  21. last;
  22. }
  23. if ($v > 0) {
  24. $r1 = $r;
  25. }
  26. else {
  27. $r2 = $r;
  28. }
  29. }