結果
| 問題 |
No.492 IOI数列
|
| コンテスト | |
| ユーザー |
koyumeishi
|
| 提出日時 | 2017-03-10 23:25:29 |
| 言語 | Ruby (3.4.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,205 bytes |
| コンパイル時間 | 202 ms |
| コンパイル使用メモリ | 7,424 KB |
| 実行使用メモリ | 12,416 KB |
| 最終ジャッジ日時 | 2024-06-24 08:45:10 |
| 合計ジャッジ時間 | 3,310 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 18 WA * 1 |
コンパイルメッセージ
Syntax OK
ソースコード
mod1 = 10**9 + 7
mod2 = 101010101010101010101
n = gets.to_i
if n == 1 then
puts 0
else
m = n
n = m-1
res = [1,0,0,1]
mat = [100,1,0,1]
while n != 0 do
if( n%2 == 1 ) then
res = [ mat[0] * res[0] + mat[1] * res[2], mat[0] * res[1] + mat[1] * res[3],
mat[2] * res[0] + mat[3] * res[2], mat[2] * res[1] + mat[3] * res[3] ]
res = res.map{|x| x % mod1 }
end
mat = [ mat[0] * mat[0] + mat[1] * mat[2], mat[0] * mat[1] + mat[1] * mat[3],
mat[2] * mat[0] + mat[3] * mat[2], mat[2] * mat[1] + mat[3] * mat[3] ]
mat = mat.map{|x| x%mod1 }
n /= 2
end
puts (res[0] + res[1]) % mod1
n = m-1
res = [1,0,0,1]
mat = [100,1,0,1]
while n != 0 do
if( n%2 == 1 ) then
res = [ mat[0] * res[0] + mat[1] * res[2], mat[0] * res[1] + mat[1] * res[3],
mat[2] * res[0] + mat[3] * res[2], mat[2] * res[1] + mat[3] * res[3] ]
res = res.map{|x| x % mod2 }
end
mat = [ mat[0] * mat[0] + mat[1] * mat[2], mat[0] * mat[1] + mat[1] * mat[3],
mat[2] * mat[0] + mat[3] * mat[2], mat[2] * mat[1] + mat[3] * mat[3] ]
mat = mat.map{|x| x%mod2 }
n /= 2
end
puts (res[0] + res[1]) % mod2
end
koyumeishi