結果
| 問題 | No.1084 積の積 | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2020-06-20 00:12:01 | 
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 276 ms / 2,000 ms | 
| コード長 | 595 bytes | 
| コンパイル時間 | 95 ms | 
| コンパイル使用メモリ | 12,544 KB | 
| 実行使用メモリ | 21,624 KB | 
| 最終ジャッジ日時 | 2024-07-03 16:16:42 | 
| 合計ジャッジ時間 | 4,853 ms | 
| ジャッジサーバーID (参考情報) | judge2 / judge5 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 5 | 
| other | AC * 27 | 
ソースコード
def solve():
    ans = 1
    mod = 10**9+7
    N = int(input())
    A = list(map(int, input().split()))
    imos = [0]*(N+2)
    start = 0
    prod = 1
    for end in range(N):
        prod *= A[end]
        while prod>=10**9:
            prod //= A[start]
            start += 1
        imos[start] += 1
        imos[end+1] -= end+2-start
        imos[end+2] += end+1-start
    for i in range(1,N+1):
        imos[i] += imos[i-1]
    for i in range(1,N+1):
        imos[i] += imos[i-1]
    for i in range(N):
        ans *= pow(A[i],imos[i],mod)
        ans %= mod
    return ans
print(solve())
            
            
            
        