030 Digit fifth powers.sf 362 B

12345678910111213141516171819
  1. #!/usr/bin/ruby
  2. # Author: Trizen
  3. # Date: 18 March 2023
  4. # https://github.com/trizen
  5. # https://projecteuler.net/problem=30
  6. # Runtime: 11.792s
  7. # The limit can be found by solving for `k` in the inequality:
  8. # 10^k > k * 9^5
  9. var k = bsearch_inverse(0, 10, {|k|
  10. 10**k <=> k*9**5
  11. })
  12. say (2 .. 10**k -> lazy.grep {|n| n.digits.sum_by { .ipow(5) } == n }.sum)