結果
| 問題 | No.492 IOI数列 | 
| コンテスト | |
| ユーザー |  koyumeishi | 
| 提出日時 | 2017-03-10 23:27:05 | 
| 言語 | Ruby (3.4.1) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 93 ms / 1,000 ms | 
| コード長 | 1,214 bytes | 
| コンパイル時間 | 161 ms | 
| コンパイル使用メモリ | 7,552 KB | 
| 実行使用メモリ | 12,416 KB | 
| 最終ジャッジ日時 | 2024-06-24 08:46:45 | 
| 合計ジャッジ時間 | 2,791 ms | 
| ジャッジサーバーID (参考情報) | judge2 / judge4 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 19 | 
コンパイルメッセージ
Syntax OK
ソースコード
mod1 = 10**9 + 7
mod2 = 101010101010101010101
n = gets.to_i
if n == 1 then
  puts 1
  puts 1
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
            
            
            
        