考えて競プロする

プログラミングコンテストの問題をどう考えて解いたかを記録していくブログです。使用言語はPython3

ABC055-B - Training Camp を解く

ABC055-B - Training Camp

 

問題文の通りにシミュレーションすることで答えを求めることができるが

N が大きくなると、シミュレーションではとても時間がかかってしまう

 

しかしこの問題では、答えを 1000000007 で割った余りを

出力することとなっている

 

このように素数で割った余りを出力する問題は

今回のような単純な掛け算を繰り返すような場合であれば

計算途中の値に対して余りを取ってもいいというルールがあるので

その性質を利用していく

 

以上を踏まえて書いたコードを以下に示す

 

提出したコード

# 入力
N=int(input())

# パワー(初期値1)
p=1

for i in range(N):
  p*=(i+1)

  # 余りをとる
  p%=1000000007

# 出力
print(p)

 

提出結果はACでした