36 lines
727 B
R
36 lines
727 B
R
numdigits <- function(n) ifelse(log10(n)%%1==0,
|
|
1+log10(n),
|
|
ceiling(log10(n)))
|
|
|
|
digmul <- function(n){
|
|
k <- numdigits(n)
|
|
get_digit <- function(m) (n%/%10^m)%%10
|
|
prod(sapply(0:(k-1), get_digit))
|
|
}
|
|
|
|
mdr_mp <- function(n){
|
|
m <- n
|
|
i <- 0
|
|
while(m > 9){
|
|
m <- digmul(m)
|
|
i <- i+1
|
|
}
|
|
c("MDR"=m, "MP"=i)
|
|
}
|
|
|
|
test_nums <- c(123321, 7739, 893, 899998)
|
|
rbind("n"=test_nums, sapply(test_nums, mdr_mp)) |> t()
|
|
|
|
first5mdr <- function(n){
|
|
m <- 0
|
|
nums <- numeric(0)
|
|
while(length(nums) < 5){
|
|
if(mdr_mp(m)[1] == n){
|
|
nums <- c(nums, m)
|
|
}
|
|
m <- m+1
|
|
}
|
|
setNames(nums, paste0("n_", 1:5))
|
|
}
|
|
|
|
rbind("MDR"=0:9, sapply(0:9, first5mdr)) |> t()
|