Here we use a Binary-search the answer approach, on the light radius as the value under test. We have a boolean validation function, that tells us whether it is possible or not. And we want the smallest value for which it is possible.
If you can help it, it's better to use $\t{1e9}$ (which literally means $\t{1*10^9}$) for readability, over $1000000000$, since there's a chance you might mistype the number of $0$'s you need. In this case, I made sure the cast works correctly before using this. Scale all values by this quantity, so we don't need to worry about losing precision on double types.
Unfortunately, both options for submitting JavaScript: Node 9.4.0, and JavaScript V8 4.8.0, do not have support for the BigInt data type (added later, around 10.4 for Node). So the code below is not accepted, though I quite confident it is correct. Submitting JavaScript is really a special kind of thing, so I'm not surprised, but I did try a number of approaches in effort to get this to work. Even pulling in a minified BigNumber library won't work, though I'm sure there is someone out there who could figure something out. For me, it's not worth it, at least for this problem.
Lesson learned: Don't waste time doing JavaScript for input with bounds $\geq 2^{53}$.