Problem 40

Problem 40 - Project Euler
やっぱ多少は考えてから書き始めるべき。

toDigits <- function(n){
  if(n < 10) return(n)
  rev(floor(n/(10^(0:floor(log(n,10)))))%%10)
      }

digits <- 10^(1:6)
ans <- 1

for(i in digits){
  num <- i
  m <- 9
  d <- 1
  while(num > m){
    num <- num - m
    d <- d+1
    m <- 10^(d-1)*d*9
  }
  ans <- ans * toDigits(10^(d-1) + ceiling(num/d) - 1)[(num%%d)]
}