https://projecteuler.net/problem=40
nが何桁のところにあるか分かればかんたんですね。
import sys #################### library #################### fn digits(owned n: Int) -> List[Int]: var ds = List[Int]() while n > 0: var d = n % 10 n //= 10 ds.append(d) return ds #################### process #################### fn d(n: Int) -> Int: var s = 0 for e in range(1, 19): var s1 = s + 9 * 10**(e-1) * e if n <= s1: var k = (n - s - 1) // e + 10**(e-1) var r = (n - s - 1) % e var ds = digits(k) return ds[e-r-1] s = s1 return 0 fn f(N: Int) -> Int: var s = 1 for e in range(N): s *= d(10**e) return s fn main() raises: var args = sys.argv() var N = atol(args[1]) print(f(N))