
MATHEMATICA

cz[n_, k_] := Floor[n/10^k] 10^(k  1) + (Ceiling[Floor[n/10^(k  1)]/10]  Floor[Floor[n/10^(k  1)]/10]  1) (10^(k  1)  Mod[n, 10^(k  1)]  1) countZeroes[n_] := (z = 0; k = 1; len = Length[IntegerDigits[n]]; While[k < len, z = z + cz[n, k]; k++ ]; z) c = 8; d = 16; While[d  c > 1 , If[countZeroes[d] >= c, d = (c + d)/2, {c, d} = {d, d + 2 d  2 c}]]; While[ countZeroes[c] < c, c++ ]; Print[c] countAny[n_, anyK_] := (z = 0; lenK = Length[IntegerDigits[anyK]]; len = Length[IntegerDigits[n]]; k = lenK;
While[k <= len, middle = Mod[Floor[n/10^(k  lenK)], 10^lenK]; If [middle > anyK, z = z + ( Floor[n/10^k] + 1) 10^(k  lenK)]; If[middle < anyK, z = z + Floor[n/10^k] 10^(k  lenK)]; If[middle == anyK, z = z + Floor[n/10^k] 10^(k  lenK) + Mod[n, 10^(k  lenK)] + 1]; k++ ]; z) i = 1; c = 8; d = 16; While[i < 20, While[d  c > 1 , If[countAny[d, i] >= c, d = (c + d)/2, {c, d} = {d, d + 2 d  2 c}]]; While[countAny[c, i] < c, c++ ]; Print[c]; d = c + 8; i++ ]
