1234567891011121314151617181920212223242526272829303132333435 |
- #!/usr/bin/ruby
- # Daniel "Trizen" Șuteu
- # License: GPLv3
- # Date: 27 September 2017
- # https://github.com/trizen
- # https://projecteuler.net/problem=235
- # Runtime: 0.162s
- const n = 5000
- const u = -600000000000
- var r1 = 1
- var r2 = 2
- while (r1 <= r2) {
- var r = ((r1+r2) / 2)
- var v = (((3*(n-299) * r**n) - (3*(n-300) * r**(n+1)) - 900*r + 897) / (r - 1)**2 - u)
- if (abs(r1 - r2) < 1e-14) {
- printf("%.12f\n", r1)
- break
- }
- if (v > 0) {
- r1 = r
- }
- else {
- r2 = r
- }
- }
|