Problem 119

512は各桁の和(8)を3乗した値に等しい(8^3 = 512).
各桁の和を何乗かするとその値になる性質を持つ数としては,他に614656 = 28^4などがある.
この性質を持つ値を小さいものから並べた数列の第n項をa_nとする.またa_nは2桁以上の整数とする.
a_2 = 512で,a_10 = 614656である.a_30を求めよ.
gmpがなかったら生きていけない.50ms.

library(gmp)
sum.digit <- function(n) sum(as.numeric(unlist(strsplit(as.character(n), ""))))
sort.bigz <- function(z) z[order(as.numeric(z))]

limit <- 100
i <- 1
an <- as.bigz(0)
for(a in 2:limit){
  for(p in 2:(limit/10)){
    if(sum.digit(pow.bigz(a, p)) == a){
      an[i] <- pow.bigz(a, p)
      i <- i + 1
    }
  }
}
sort(an)[30]