結果
問題 | No.1084 積の積 |
ユーザー |
![]() |
提出日時 | 2020-06-19 22:10:01 |
言語 | PyPy3 (7.3.15) |
結果 |
RE
|
実行時間 | - |
コード長 | 595 bytes |
コンパイル時間 | 159 ms |
コンパイル使用メモリ | 82,288 KB |
実行使用メモリ | 92,632 KB |
最終ジャッジ日時 | 2024-07-03 14:50:50 |
合計ジャッジ時間 | 3,402 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 RE * 1 |
other | AC * 24 RE * 3 |
ソースコード
import sys input = sys.stdin.readline N = int(input()) a = list(map(int, input().split())) mod = 10 ** 9 + 7 rs = [0] * N r = 0 x = 1 imos = [0] * (N + 1) imosliner = [0] * (N + 1) for l in range(N): while r < N: if x * a[r] >= 10 ** 9: rs[l] = r break x *= a[r] r += 1 else: rs[l] = r x //= a[l] imos[l] += rs[l] - l imosliner[l] -= 1 imosliner[rs[l]] += 1 #print(imos, imosliner) for i in range(N): imos[i + 1] += imos[i] + imosliner[i] imosliner[i + 1] += imosliner[i] res = 1 for i in range(N): res *= pow(a[i], imos[i], mod) res %= mod print(res)