結果
問題 | No.498 ワープクリスタル (給料日編) |
ユーザー |
![]() |
提出日時 | 2016-03-16 02:26:12 |
言語 | Python2 (2.7.18) |
結果 |
AC
|
実行時間 | 870 ms / 2,000 ms |
コード長 | 622 bytes |
コンパイル時間 | 132 ms |
コンパイル使用メモリ | 7,076 KB |
実行使用メモリ | 148,784 KB |
最終ジャッジ日時 | 2024-10-15 19:45:14 |
合計ジャッジ時間 | 12,103 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 21 |
ソースコード
from math import log R=xrange;I=lambda:map(int,raw_input().split()) p=10**9+7;F=[1];FI=[0]*16 for i in R(75):F+=[(i+1)*F[i]%p] FI[15]=pow(F[15],p-2,p) for i in R(15,0,-1):FI[i-1]=i*FI[i]%p s,t,K = I();G=(s,t);D=[None]*(1<<K*4);D[0]=(0,0) for i in R(K): x,y,N=I();m=1;s=i*4 for j in R(int(log(N,2))): z,w=x*m,y*m for k in R((1<<j+s)-1,-1,-1): if D[k]:D[k+(m<<s)]=(D[k][0]+z,D[k][1]+w) N-=m;m*=2 if N>0: z,w=x*N,y*N for k in R((1<<4+s)-1,-1,-1): if D[k]:D[k+(N<<s)]=(D[k][0]+z,D[k][1]+w) A=0 for k in R(1<<K*4): if D[k]==G: T=0;U=1 for j in R(K):V=k%16;k>>=4;T+=V;U=U*FI[V]%p A=(A+F[T]*U)%p print A