質問: A*R**(N-1) if ans > 10**9: print('large') else: print(ans) ```
回答: Nが10^9というべらぼうに大きい数字になっているテストケースでTLEすると思われます。 とても大きいNに対して、そのN-1回分かけて調べればいいかというとそういうわけではありません。 大きいNに対しては、何回かければlargeかどうかがわかるのかというと、2を30回かけると10^9程度なので、2以上の数を31回かけると必ず10^9を超えてしまうことがわかります(答えがlargeになる) 答えがlargeになった時点でさらに掛け算してもlargeなので、largeとわかった時点で切ってしまえばいいわけです。 N-1, もしくは31のどちらか小さい方の回数だけ掛け算すればいいです。 追記)実装例です。 ``` A, R, N = map(int, input().split()) ans = A*R**(min(N-1, 31)) if ans > 10**9: print('large') else: print(ans) ```