E - Geometric Progression 解説
by
kyopro_friends
剰余の法 と互いに素とは限らない数 で最後に一度だけ除算を行いたい場合、予め途中の計算を全て で行えばよいです。
今回求めるものは なので を で求めればよいです。 は 程度の大きさになるため、計算には多倍長整数(128bit整数)を用いるなどの工夫が必要です。(繰り返し”二倍法”により64bitの範囲で計算することもできます)
のケースに注意しましょう。
実装例(Python)
Copy
A,X,M=map(int,input().split())
if A==1:
print(X%M)
else:
print( (pow(A,X,M*(A-1))-1) // (A-1) % M)
A,X,M=map(int,input().split()) if A==1: print(X%M) else: print( (pow(A,X,M*(A-1))-1) // (A-1) % M)
投稿日時:
最終更新: