●そもそもの動機として、a[100]=3×5^100/4-3/4のようにマイナスがあるとlogの計算がうまくできない!という問題があります。そこで、なんとか工夫しようということになります。
続いて、感覚的な話ですが、3×5^100/4に対して3/4=0.75は「無視できそう」なくらい微々たるものです。
この「無視できそう」というのをもう少し具体的に言うと、a[100]に3/4=0.75を足しても桁数には影響がない、つまり「a[100]の桁数=bの桁数になりそう」ということです。
で、無視してよい(a[100]の桁数=bの桁数)ことが分かれば、a[100]の桁数を計算する代わりにbの桁数を計算すればよいことになります。
(bは×、÷しか出て来ないのでlogの計算ができる!)
●さて、「正の」整数に対して小数(今回の場合は0.75)を足しても整数部分の桁数は変わりません。
これは具体例を考えてみればよくて、例えば何でもいいので2桁の数をイメージしてみると、その数に0.75を足した数も2桁です。
例)99+0.75=99.75の整数部分はやっぱり2桁。
この性質は1桁だろうと100桁だろうと成り立ちます。
よってめでたく、a[100]の代わりにbの桁数を計算すればよいことが分かりました。
※ちなみに「負の」整数に対しては上の性質は成り立たないです。例えば、-100は3桁ですが、-100+0.75=-99.25は2桁に変わってしまいます。