H - Geometric Progression Editorial by ryoryoryo111

平方分割による解法

\(X <= 10^{12}\)なので平方分割することを考えます。\(\sqrt{X}\)\( 10^{6}\)程度なので、

\[ B = 1+A+A^2+...+A^{[\sqrt{X}]-1} \]

を時間内に求めることは十分できます。ここで[]はガウス記号です。 さらに\(D = A^{[\sqrt{X}]}\)として、

\[ C = B+B*D+B*D^{2}+...+B*D^{[\sqrt{x}]} \]

を求めます。これも10^6程度のstepで求めることができます。

ここで

\[ C = 1+A+A^2+...+A^{[\sqrt{X}]*[\sqrt{X}]-1} \]

です。

さて、まだ残る項が\(X-[\sqrt{X}]*[\sqrt{X}]\)ほどありますが、これは高々\(\sqrt{X}\)程度の大きさです。 \(X-[\sqrt{X}]*[\sqrt{X}]\)回、

\[ C *= A \]

\[ C += 1 \]

すると、Cは求めたいものに一致します。

例(Rust):

https://atcoder.jp/contests/abc293/submissions/39633707

posted:
last update: