Чуть более аккуратная оценка выглядит так:
1) Пусть X[k] - множество чисел длинны k, не содержащих 9. Если y - префикс (первые цифры) длинной l, то:
2) {y} == X[l];
3) y * 10^(k-l) <= x <= (y+8/9) * 10^(k-l);
4) Для каждого y существует ровно 9^(k-l) x-ов;
Если мы обозначим SS[k] = сумма (1/x) для x принадлежащих X[k],
SL[k] = сумма (1/(x+8/9)) для x принадлежащих X[k], то
5) SL[l] * (9/10)^(k-l) <= SS[k] <= SS[l] * (9/10)^(k-l)
Таким образом (суммируя геометрические прогрессии):
SS[1] + SS[2] + ... + SS[l] + 9 * SL[l] <= S <= SS[1] + SS[2] + ... + SS[l-1] + 10 * SS[l].
Используя молоток (компьютер), имеем (для l = 1,...6):
19.7412 <= S <= 27.1786
22.5874 <= S <= 23.2578
22.8902 <= S <= 22.9506
22.9179 <= S <= 22.9234
22.9204 <= S <= 22.9209
22.9207 <= S <= 22.9207
Кстати, считая на компьютере, нужно либо правильно бороться с ошибками округления, либо (что делал я) считать в рациональных числах.
Еще одно замечание - о сходимости границ - SS[k] - SL[k] = O[10^(-k)]