teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

コード追加

2020/07/21 11:04

投稿

Penpen7
Penpen7

スコア698

answer CHANGED
@@ -2,4 +2,14 @@
2
2
  とても大きいNに対して、そのN-1回分かけて調べればいいかというとそういうわけではありません。
3
3
  大きいNに対しては、何回かければlargeかどうかがわかるのかというと、2を30回かけると10^9程度なので、2以上の数を31回かけると必ず10^9を超えてしまうことがわかります(答えがlargeになる)
4
4
  答えがlargeになった時点でさらに掛け算してもlargeなので、largeとわかった時点で切ってしまえばいいわけです。
5
+ N-1, もしくは31のどちらか小さい方の回数だけ掛け算すればいいです。
6
+
5
- あとは解説pdfの実装の通りです。
7
+ 追記)実装です。
8
+ ```python
9
+ A, R, N = map(int, input().split())
10
+ ans = A*R**(min(N-1, 31))
11
+ if ans > 10**9:
12
+ print('large')
13
+ else:
14
+ print(ans)
15
+ ```

1

修正

2020/07/21 11:04

投稿

Penpen7
Penpen7

スコア698

answer CHANGED
@@ -2,4 +2,4 @@
2
2
  とても大きいNに対して、そのN-1回分かけて調べればいいかというとそういうわけではありません。
3
3
  大きいNに対しては、何回かければlargeかどうかがわかるのかというと、2を30回かけると10^9程度なので、2以上の数を31回かけると必ず10^9を超えてしまうことがわかります(答えがlargeになる)
4
4
  答えがlargeになった時点でさらに掛け算してもlargeなので、largeとわかった時点で切ってしまえばいいわけです。
5
- で, N-1か31どちらか小さい方の回数だけかけて10^9を超えていればlarge, そうなければそのまま掛け算した答えを出力ればいいわけです
5
+ あとは解説pdf実装通りです。