結果
問題 | No.569 3 x N グリッドのパスの数 |
ユーザー | horiesiniti |
提出日時 | 2017-09-15 05:27:47 |
言語 | Ruby (3.3.0) |
結果 |
AC
|
実行時間 | 321 ms / 2,000 ms |
コード長 | 2,163 bytes |
コンパイル時間 | 590 ms |
コンパイル使用メモリ | 7,424 KB |
実行使用メモリ | 12,672 KB |
最終ジャッジ日時 | 2024-11-07 22:27:21 |
合計ジャッジ時間 | 14,637 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 91 ms
12,160 KB |
testcase_01 | AC | 92 ms
12,160 KB |
testcase_02 | AC | 95 ms
12,288 KB |
testcase_03 | AC | 98 ms
12,288 KB |
testcase_04 | AC | 99 ms
12,160 KB |
testcase_05 | AC | 100 ms
12,416 KB |
testcase_06 | AC | 101 ms
12,288 KB |
testcase_07 | AC | 101 ms
12,160 KB |
testcase_08 | AC | 101 ms
12,416 KB |
testcase_09 | AC | 104 ms
12,288 KB |
testcase_10 | AC | 102 ms
12,416 KB |
testcase_11 | AC | 105 ms
12,288 KB |
testcase_12 | AC | 106 ms
12,544 KB |
testcase_13 | AC | 106 ms
12,544 KB |
testcase_14 | AC | 105 ms
12,160 KB |
testcase_15 | AC | 104 ms
12,160 KB |
testcase_16 | AC | 108 ms
12,544 KB |
testcase_17 | AC | 109 ms
12,416 KB |
testcase_18 | AC | 105 ms
12,288 KB |
testcase_19 | AC | 108 ms
12,672 KB |
testcase_20 | AC | 201 ms
12,416 KB |
testcase_21 | AC | 202 ms
12,416 KB |
testcase_22 | AC | 194 ms
12,672 KB |
testcase_23 | AC | 198 ms
12,416 KB |
testcase_24 | AC | 199 ms
12,672 KB |
testcase_25 | AC | 202 ms
12,288 KB |
testcase_26 | AC | 195 ms
12,416 KB |
testcase_27 | AC | 193 ms
12,416 KB |
testcase_28 | AC | 192 ms
12,288 KB |
testcase_29 | AC | 199 ms
12,544 KB |
testcase_30 | AC | 200 ms
12,416 KB |
testcase_31 | AC | 198 ms
12,544 KB |
testcase_32 | AC | 196 ms
12,544 KB |
testcase_33 | AC | 201 ms
12,544 KB |
testcase_34 | AC | 195 ms
12,544 KB |
testcase_35 | AC | 196 ms
12,544 KB |
testcase_36 | AC | 193 ms
12,416 KB |
testcase_37 | AC | 196 ms
12,672 KB |
testcase_38 | AC | 195 ms
12,416 KB |
testcase_39 | AC | 197 ms
12,416 KB |
testcase_40 | AC | 309 ms
12,544 KB |
testcase_41 | AC | 302 ms
12,544 KB |
testcase_42 | AC | 301 ms
12,416 KB |
testcase_43 | AC | 304 ms
12,672 KB |
testcase_44 | AC | 306 ms
12,416 KB |
testcase_45 | AC | 305 ms
12,544 KB |
testcase_46 | AC | 310 ms
12,416 KB |
testcase_47 | AC | 314 ms
12,288 KB |
testcase_48 | AC | 311 ms
12,416 KB |
testcase_49 | AC | 311 ms
12,544 KB |
testcase_50 | AC | 308 ms
12,544 KB |
testcase_51 | AC | 312 ms
12,416 KB |
testcase_52 | AC | 311 ms
12,544 KB |
testcase_53 | AC | 321 ms
12,416 KB |
testcase_54 | AC | 311 ms
12,544 KB |
testcase_55 | AC | 308 ms
12,416 KB |
testcase_56 | AC | 305 ms
12,672 KB |
testcase_57 | AC | 316 ms
12,544 KB |
testcase_58 | AC | 315 ms
12,416 KB |
testcase_59 | AC | 312 ms
12,544 KB |
コンパイルメッセージ
Syntax OK
ソースコード
require 'set' mod1=1000000007 def f(a1,a2) a1.each{|e| a2.push([e[0].reverse(),e[1].reverse]) } end def g(all,es) es.each{|e1| e1.each{|e2| all.push([e2[0],e2[1],1]) } } end def f2(perm,perm2) res=[] h1={} h2=Hash.new(0) perm2.each{|e| if !h1.key?(e[0]) then h1[e[0]]=[[e[1],e[2]]] else h1[e[0]].push([e[1],e[2]]) end } mod1=1000000007 perm.each{|e1| left=e1[0] r1=e1[1] p1=e1[2] if h1.key?(r1) then h1[r1].each{|e3| right=e3[0] p2=e3[1] h2[[left,right]]+=(p1*p2)%mod1 } end } h2.each{|k,v| res.push([k[0],k[1],v]) } return res end all=[] a111=[ ["0001","1000"], ["1000","0001"]] a110=[ ["1000","0010"], ["1023","0001"], ["0010","1000"], ["0001","3021"]] a011=[] f(a110,a011) a101=[ ["1230","0001"], ["1203","0010"], ["1000","0123"], ["0100","1023"], ["3021","0100"], ["0321","1000"], ["0001","3210"], ["0010","3201"]] a100=[ ["0123","1023"], ["0100","1000"], ["0321","3021"], ["3021","0321"], ["1000","0100"], ["1023","0123"], ["0010","3210"], ["0001","3201"], ["1230","0010"], ["1203","0001"]] a001=[] f(a100,a001) a010=[ ["0010","0100"], ["0100","0010"], ["3201","3021"], ["1203","1023"], ["1023","1203"], ["3021","3201"], ["0123","0001"], ["0001","0321"], ["1000","1230"], ["3210","1000"]] a000=[ ["1000","1000"], ["0100","0100"], ["0010","0010"], ["0001","0001"], ["1230","1230"], ["1203","1203"], ["1023","1023"], ["0123","0123"], ["0321","0321"], ["3201","3201"], ["3021","3021"], ["3210","3210"]] g(all,[a000,a001,a010,a100,a011,a101,a110,a111]) s=[ ["0000","1000",1], ["0000","0100",1], ["0000","0010",1], ["0000","0001",1], ["0000","1230",1], ["0000","1203",1], ["0000","1023",1], ["0000","0123",1]] g=[ ["0001","0000",1], ["0010","0000",1], ["0100","0000",1], ["1000","0000",1], ["1203","0000",1], ["1230","0000",1], ["1023","0000",1], ["0123","0000",1] ] n=gets.to_i n=n-1 perm2=[] allPerm=[] s.each{|e| allPerm.push([e[0],e[1],1]) } all.each{|e| perm2.push([e[0],e[1],1]) } while n>0 if n%2==1 then allPerm=f2(allPerm,perm2) end perm2=f2(perm2,perm2) n=n/2 end ans=f2(allPerm,g) puts ans[0][2]%mod1