f_origin = ->n{(10*1.1007**n).round + n/10 - n/17 - n/20 - n/22 + n/23} f = ->n{10**(n/24) * f_origin[n%24]} g = ->n{(24*Math.log10(n)).round - 24} [0, *23..48, 2399, 2400, 12345].each do |i| v = f[i] puts "f[%d] = %d\ng[f[%d]] = %d\n\n" % [i, v, i, g[v]] end
Standard input is empty
f[0] = 10 g[f[0]] = 0 f[23] = 91 g[f[23]] = 23 f[24] = 100 g[f[24]] = 24 f[25] = 110 g[f[25]] = 25 f[26] = 120 g[f[26]] = 26 f[27] = 130 g[f[27]] = 27 f[28] = 150 g[f[28]] = 28 f[29] = 160 g[f[29]] = 29 f[30] = 180 g[f[30]] = 30 f[31] = 200 g[f[31]] = 31 f[32] = 220 g[f[32]] = 32 f[33] = 240 g[f[33]] = 33 f[34] = 270 g[f[34]] = 34 f[35] = 300 g[f[35]] = 35 f[36] = 330 g[f[36]] = 36 f[37] = 360 g[f[37]] = 37 f[38] = 390 g[f[38]] = 38 f[39] = 430 g[f[39]] = 39 f[40] = 470 g[f[40]] = 40 f[41] = 510 g[f[41]] = 41 f[42] = 560 g[f[42]] = 42 f[43] = 620 g[f[43]] = 43 f[44] = 680 g[f[44]] = 44 f[45] = 750 g[f[45]] = 45 f[46] = 820 g[f[46]] = 46 f[47] = 910 g[f[47]] = 47 f[48] = 1000 g[f[48]] = 48 f[2399] = 91000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 g[f[2399]] = 2399 f[2400] = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 g[f[2400]] = 2400 f[12345] = 240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 g[f[12345]] = 12345