結果
問題 | No.510 二次漸化式 |
ユーザー | aimy |
提出日時 | 2017-04-29 00:34:45 |
言語 | Haskell (9.8.2) |
結果 |
TLE
|
実行時間 | - |
コード長 | 903 bytes |
コンパイル時間 | 6,738 ms |
コンパイル使用メモリ | 172,800 KB |
実行使用メモリ | 21,408 KB |
最終ジャッジ日時 | 2024-09-13 18:54:59 |
合計ジャッジ時間 | 10,879 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
13,760 KB |
testcase_01 | AC | 2 ms
6,816 KB |
testcase_02 | TLE | - |
testcase_03 | -- | - |
testcase_04 | -- | - |
testcase_05 | -- | - |
testcase_06 | -- | - |
testcase_07 | -- | - |
testcase_08 | -- | - |
testcase_09 | -- | - |
testcase_10 | -- | - |
testcase_11 | -- | - |
testcase_12 | -- | - |
testcase_13 | -- | - |
testcase_14 | -- | - |
testcase_15 | -- | - |
testcase_16 | -- | - |
testcase_17 | -- | - |
testcase_18 | -- | - |
testcase_19 | -- | - |
testcase_20 | -- | - |
testcase_21 | -- | - |
testcase_22 | -- | - |
testcase_23 | -- | - |
testcase_24 | -- | - |
testcase_25 | -- | - |
testcase_26 | -- | - |
testcase_27 | -- | - |
testcase_28 | -- | - |
testcase_29 | -- | - |
testcase_30 | -- | - |
testcase_31 | -- | - |
testcase_32 | -- | - |
testcase_33 | -- | - |
testcase_34 | -- | - |
testcase_35 | -- | - |
コンパイルメッセージ
Loaded package environment from /home/judge/.ghc/x86_64-linux-9.8.2/environments/default [1 of 2] Compiling Main ( Main.hs, Main.o ) [2 of 2] Linking a.out
ソースコード
main = do n <- readLn :: IO Integer q <- readLn :: IO Integer qs <- map words . lines <$> getContents mapM_ print (process qs) process :: [[String]] -> [Integer] process = reverse . fst . foldl exec ([],(x,y)) a :: [Integer] -> [Integer] -> Int -> Integer a x y 0 = 1 a x y i = (x !! (i-1)) * (b x y (i-1))^2 + a x y (i-1) b :: [Integer] -> [Integer] -> Int -> Integer b x y 0 = 1 b x y i = (y !! (i-1)) * b x y (i-1) + 1 x :: [Integer] x = repeat 0 y :: [Integer] y = repeat 0 exec :: ([Integer],([Integer],[Integer])) -> [String] -> ([Integer],([Integer],[Integer])) exec (acc,(xn,yn)) q = case q of ["x",i,v] -> (acc, (replace (read i) (read v) xn, yn)) ["y",i,v] -> (acc, (xn, replace (read i) (read v) yn)) ["a",i] -> (a xn yn (read i) `mod` (10^9+7) : acc, (xn,yn)) replace :: Int -> Integer -> [Integer] -> [Integer] replace i v xs = let (x1,(_:x2)) = splitAt i xs in x1 ++ [v] ++ x2