結果
問題 | No.955 ax^2+bx+c=0 |
ユーザー | Leonardone |
提出日時 | 2019-12-18 04:46:12 |
言語 | Haskell (9.10.1) |
結果 |
RE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 1,368 bytes |
コンパイル時間 | 3,023 ms |
コンパイル使用メモリ | 190,464 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-07-07 00:32:03 |
合計ジャッジ時間 | 5,890 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 120 RE * 2 |
コンパイルメッセージ
Loaded package environment from /home/judge/.ghc/x86_64-linux-9.8.2/environments/default [1 of 2] Compiling Main ( Main.hs, Main.o ) Main.hs:7:75: warning: [GHC-63394] [-Wx-partial] In the use of ‘head’ (imported from Prelude, but defined in GHC.List): "This is a partial function, it throws an error on empty lists. Use pattern matching or Data.List.uncons instead. Consider refactoring to use Data.List.NonEmpty." | 7 | main = interact $ unlines . concat . zipWith ($) [return . show . floor . head, map show . tail] . repeat . solve . map read . words | ^^^^ Main.hs:7:92: warning: [GHC-63394] [-Wx-partial] In the use of ‘tail’ (imported from Prelude, but defined in GHC.List): "This is a partial function, it throws an error on empty lists. Replace it with drop 1, or use pattern matching or Data.List.uncons instead. Consider refactoring to use Data.List.NonEmpty." | 7 | main = interact $ unlines . concat . zipWith ($) [return . show . floor . head, map show . tail] . repeat . solve . map read . words | ^^^^ [2 of 2] Linking a.out
ソースコード
-- Try yukicoder -- author: Leonardone @ NEETSDKASU import Data.List (sort) import Data.Fixed main = interact $ unlines . concat . zipWith ($) [return . show . floor . head, map show . tail] . repeat . solve . map read . words data E30 instance HasResolution E30 where resolution _ = 10 ^ 30 type Foo = Fixed E30 solve :: [Integer] -> [Foo] solve (0:0:0:_) = [-1] solve (0:0:_:_) = [0] solve (0:b:c:_) = [1, fromIntegral (-c) / fromIntegral b] solve (a:0:0:_) = [1, 0] solve (a:0:c:_) | e < 0 = undefined -- [0] | otherwise = undefined -- [2, - sqrt e, sqrt e] where e = fromIntegral (-c) / fromIntegral a solve (a:b:0:_) = undefined -- [2, min 0 x, max 0 x] where x = fromIntegral (-b) / fromIntegral a solve (a:b:c:_) | d < 0 = [0] | d == 0 = [1, fromIntegral (-b) / fromIntegral (2*a)] | d > 0 = [2, min y z, max y z] where d = b * b - 4 * a * c y = (fromIntegral (-b) + sqrt' (fromIntegral d)) / fromIntegral (2*a) z = (fromIntegral (-b) - sqrt' (fromIntegral d)) / fromIntegral (2*a) solve _ = undefined sqrt' x = fst $ until (f x) (g x) (x,(0,x)) f x (e,_) = abs (x - e * e) < 1e-15 g x (_,(y,z)) | e * e < x = (e, (e, z)) | otherwise = (e, (y, e)) where e = (y + z) / 2