結果
| 問題 |
No.995 タピオカオイシクナーレ
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2020-02-22 15:56:03 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 296 ms / 2,000 ms |
| コード長 | 974 bytes |
| コンパイル時間 | 101 ms |
| コンパイル使用メモリ | 12,928 KB |
| 実行使用メモリ | 15,104 KB |
| 最終ジャッジ日時 | 2024-10-09 17:02:19 |
| 合計ジャッジ時間 | 4,659 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 23 |
ソースコード
def prod(arr1,arr2):
mod=10**9+7
a1,b1,c1,d1=arr1[0][0],arr1[0][1],arr1[1][0],arr1[1][1]
a2,b2,c2,d2=arr2[0][0],arr2[0][1],arr2[1][0],arr2[1][1]
ra=a1*a2+b1*c2
ra%=mod
rb=a1*b2+b1*d2
rb%=mod
rc=c1*a2+d1*c2
rc%=mod
rd=c1*b2+d1*d2
rd%=mod
return [ra,rb,rc,rd]
mod=10**9+7
n,m,k,p,q=map(int,input().split())
arr=[int(input()) for _ in range(n)]
bits=format(k,'b')
bits=bits[::-1]
l=len(bits)
mats=[]
a=(q-p)*pow(q,mod-2,mod)
a%=mod
b=p*pow(q,mod-2,mod)
b%=mod
c=p*pow(q,mod-2,mod)
c%=mod
d=(q-p)*pow(q,mod-2,mod)
d%=mod
mats.append([[a,b],[c,d]])
for i in range(l-1):
ret=prod(mats[-1],mats[-1])
mats.append([[ret[0],ret[1]],[ret[2],ret[3]]])
coef=[[1,0],[0,1]]
for i in range(l):
if bits[i]=='0':
continue
else:
ret=prod(coef,mats[i])
coef=[[ret[0],ret[1]],[ret[2],ret[3]]]
coef1=coef[0][0]
coef2=coef[0][1]
ans=0
for i in range(n):
if i<m:
ans+=arr[i]*coef1
ans%=mod
else:
ans+=arr[i]*coef2
ans%=mod
print(ans)