119 Digit power sum.sf 603 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #!/usr/bin/ruby
  2. # Author: Trizen
  3. # Date: 18 May 2017
  4. # Translated: 16 November 2023
  5. # https://github.com/trizen
  6. # https://projecteuler.net/problem=119
  7. # Runtime: 0.415s
  8. define nth = 30
  9. var terms = []
  10. var prev = 0
  11. for (var n = 1; true; ++n) {
  12. for k in (1..n) {
  13. if (n.ipow(k).sumdigits == n) {
  14. var t = n.ipow(k)
  15. t.len >= 2 || next
  16. terms << t
  17. say "#{n} -> #{n}^#{k} -> #{n.ipow(k)}"
  18. }
  19. }
  20. terms.sort!
  21. if (terms.len >= 2*nth) {
  22. terms[nth-1] == prev && break
  23. prev = terms[nth-1]
  24. }
  25. }
  26. say terms[nth-1]