結果
問題 | No.1084 積の積 |
ユーザー |
|
提出日時 | 2020-06-19 22:20:33 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 148 ms / 2,000 ms |
コード長 | 666 bytes |
コンパイル時間 | 160 ms |
コンパイル使用メモリ | 82,796 KB |
実行使用メモリ | 88,316 KB |
最終ジャッジ日時 | 2024-07-03 14:57:15 |
合計ジャッジ時間 | 3,360 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 27 |
ソースコード
N=int(input()) A=list(map(int,input().split())) mod=10**9+7 if 0 in A: print(0) exit() data=[0]*(N+1) s=0 t=1 val=A[0] while N>s and N>t: test=val*A[t] if 10**9>test: val=test t+=1 else: data[s]+=1 data[t]+=-1 if s!=0: data[s-1]-=(t-s) data[s]+=(t-s) val//=A[s] s+=1 while N>s: data[s]+=1 data[t]+=-1 if s!=0: data[s-1]-=(t-s) data[s]+=(t-s) s+=1 for i in range(1,N): data[i]+=data[i-1] for i in range(N-2,-1,-1): data[i]+=data[i+1] ans=1 for i in range(N): ans*=pow(A[i],data[i],mod) ans%=mod print(ans)