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]