Мы докажем значительно более сильное утверждение: любая последовательность из 46 цифр встретится в периоде десятичной дроби $\dfrac{1}{3^{100}}$.
Заметим, что $3\cdot9^9\gt10^9$ (можно проверить это непосредственно, а можно вспомнить более общее неравенство $\left(1+\dfrac1k\right)^k\lt3$), поэтому $3^{100}=3^{95}\cdot3^5=3^{5\cdot19}\cdot243\gt10^{45+2}=10^{47}$; зная логарифм 3, легко проверить, что эта оценка довольно точная: наша дробь $\dfrac{1}{3^{100}}$ начинается как раз с 47 нулей (что делает формально ответ на вопрос а) тривиальным; впрочем, сравнительно нетрудно показать, что в периоде по 20 и даже по 45 раз подряд встретятся и все другие цифры, отличные от 0).
Докажем сначала индукцией по $n$, что длина периода десятичной дроби $\dfrac{1}{3^n}$ равна $3^{n-2}$ (при $n\ge2$). Для $n=2$ это верно: $\dfrac19=0{,}11111\ldots$ Пусть
$$
\dfrac{1}{3^n}=\dfrac{A_n}{10^{3^{n-2}-1}},
$$
где $A_n$, — натуральное число, не делящееся на З (это и означает, что длина периода десятичной дроби $\dfrac{1}{3^n}$ равна $3^{n-2}$). Тогда
$$
10^{3^{n-2}}-1=3^nA_n
$$
и $$
10^{3^{n-1}}-1=10^{(3^{n-2})3}-1=(10^{3^{n-2}}-1)(10^{2\cdot3^{n-2}}+10^{3^{n-2}}+1).
$$
Вторая скобка даёт, очевидно, остаток 3 при делении на 9; пусть она равна $9B_n+3$, тогда
$$
10^{3^{n-1}}-1=(10^{3^{n-2}}-1)(9B_n+3)=3^{n+1}A_n(3B_n+1)=3^{n+1}A_{n+1},
$$
где $A_{n+1}$ не делится на 3, так что $\dfrac{1}{3^{n+1}}$ имеет период длины $3^{n-1}$. (Заметим, что по индукции легко убедиться также, что $A_n$, даёт остаток 1 при делении на 3.) В качестве небольшого отступления покажем, пользуясь этим, почему в нашей дроби $\dfrac{1}{3^{100}}$ встретятся группы одинаковых цифр подряд. Дело в том, что период $A_n$, при достаточно большом $n$ начинается с серии нулей. При переходе к $A_{n+2}$ — его можно получить, деля столбиком группу из девяти $A_n$ на 9 — в начале ($k+1$)-го по счёту $A_n$, мы будем получать серию цифр $k$ (где $k=0$, 1, $\ldots$, 8). Любопытно, что если $n$ настолько велико, что серия имеет длину более 9, мы можем, разделив серию $\ldots11111\ldots$ на 9, в явном виде указать место, где в числе $A_{n+4}$, возникают подряд цифры 012345679 (это — период $\dfrac{1}{81}$), но из-за отсутствия восьмёрки этих соображений чуть-чуть не хватает для решения задачи б).
Вернёмся теперь к обещанному общему утверждению. Положим $M=3^{98}$ и будем мысленно делить столбиком 1 на $9M=3^{100}$. В процессе деления мы должны получить периодическую десятичную дробь с периодом длины $M$, так что всего нам встретится $M$ различных остатков — до тех пор, пока очередной остаток вновь не окажется равным 1. Остатки — натуральные числа, меньшие $9M$, причём каждый из них даёт при делении на 9 остаток 1, т. е. имеет вид $9q+1$ ($q$ — целое); первый остаток 1, а каждый следующий получается из предыдущего умножением на $10=9+1$ — приписыванием нуля — и, быть может, вычитанием числа, кратного $9M$; все эти процедуры не меняют число «по модулю 9». Но количество таких чисел (1, 10, 19, $\ldots$, $9q+1$, $\ldots$, $9M-8$) как раз равно $M$, поэтому все они встретятся в качестве остатков.
Остальное просто. Пусть $b=0{,}b_1b_2\ldots b_{46}$ — любая 46-значная десятичная дробь, $b^*=b+10^{-46}$. Разность между числами $9Mb^*$ и $9Mb$ больше 10, поскольку $9M\gt10^{47}$. Значит, между ними найдётся число $a$ вида $9q+1$. И в процессе деления нa $9M$, начиная с этого остатка $a=9q+1$, будут получены 46 нужных цифр $b_1b_2\ldots b_{46}$: ведь $\dfrac{a}{9M}$ заключено между $b$ и $b^*$.