A=a1a2⋯am,B=b1b2⋯bnとします。QP=0.a1a2⋯amb1˙b2⋯bn−1bn˙=10m1(a1a2⋯am+0.b1˙b2⋯bn−1bn˙)であり、c=0.b1˙b2⋯bn−1bn˙とすると、10nc−c=b1b2⋯bn=Bよりc=10n−1Bです。よって、QP=10m1(A+10n−1B)=10m(10n−1)(10n−1)A+Bより10m(10n−1)P=Q{(10n−1)A+B}となります。
PとQは互いに素なので、10m(10n−1)はQの倍数です。よって、Q=2s⋅5t⋅u(s,tは0以上の整数、uは2,5と互いに素な自然数)とすると、mの最小値はmax(s,t)です。また、10n−1はuの倍数となるので、これを満たすnの最小値を離散対数を用いて求めれば良いです。
計算量は、mを求めるのにO(logQ)、nを求めるのにO(Q)かかるので、全体でO(Q)となります。(上記のリンクに載っているコードではO(QlogQ)ですが、今回はそれでも十分間に合います。)
質問・誤りがある場合
Twitterに連絡ください。ID : @YS55749378