結果
問題 | No.1084 積の積 |
ユーザー |
|
提出日時 | 2020-06-19 22:36:31 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 154 ms / 2,000 ms |
コード長 | 711 bytes |
コンパイル時間 | 165 ms |
コンパイル使用メモリ | 82,464 KB |
実行使用メモリ | 91,004 KB |
最終ジャッジ日時 | 2024-07-03 15:09:17 |
合計ジャッジ時間 | 3,943 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 27 |
ソースコード
mod=10**9+7n=int(input())arr=list(map(int,input().split()))if 0 in arr:print(0)exit()rs=[-1]*ntmp=1pos=0for i in range(n):for j in range(max(i,pos),n):tmp*=arr[j]if tmp>=10**9:rs[i]=jpos=jtmp//=arr[j]breakelse:rs[i]=npos=ntmp//=arr[i]imos1=[0]*(n+1)imos2=[0]*(n+1)for i in range(n):imos1[i]=rs[i]-iimos2[i+1]+=-1if rs[i]+1<=n:imos2[rs[i]+1]+=1for i in range(1,n+1):imos2[i]+=imos2[i-1]for i in range(n):imos1[i]+=imos2[i]for i in range(1,n+1):imos1[i]+=imos1[i-1]ans=1for i in range(n):ans*=pow(arr[i],imos1[i],mod)ans%=modprint(ans)