結果
| 問題 |
No.147 試験監督(2)
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2020-02-08 19:06:41 |
| 言語 | Crystal (1.14.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 588 bytes |
| コンパイル時間 | 12,006 ms |
| コンパイル使用メモリ | 301,920 KB |
| 実行使用メモリ | 17,472 KB |
| 最終ジャッジ日時 | 2024-06-30 19:51:10 |
| 合計ジャッジ時間 | 18,410 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | TLE * 1 -- * 3 |
ソースコード
#!/usr/bin/env crystal
require "big"
MOD=1000000007
def mul(a,b,m)
r=a.size.times.map{[0_i64]*b[0].size}.to_a
a.size.times{|y|
b[0].size.times{|x|
r[y][x]=b.size.times.reduce(0_i64){|s,i|(s+a[y][i]*b[i][x])%m}
}
}
r
end
r=1_i64
gets.not_nil!.to_i.times{
c_,d_=gets.not_nil!.split
c=c_.to_i64
d=BigInt.new(d_)
x=[[1_i64,1_i64],[1_i64,0_i64]]
e=[[1_i64,0_i64],[0_i64,1_i64]]
c-=1
d%=MOD-1 if d>MOD-1
while c>0
e=mul(e,x,MOD) if c%2>0
x=mul(x,x,MOD)
c/=2
end
y=(e[0][0]+e[0][1]+e[1][0]+e[1][1])%MOD
while d>0
r=r*y%MOD if d%2>0
y=y*y%MOD
d/=2
end
}
puts r