{-# LANGUAGE BangPatterns #-}

import Control.Monad
import Data.List
import Data.Bits
import Debug.Trace
import Data.Maybe
import qualified Data.ByteString.Char8 as C

main :: IO ()
main = do
  [a, b, x] <- map fromIntegral <$> readInts
  print $ solve a b x

-- 場合1 (x > a ^ 2 * b / 2)
-- (a^2 * b) - x = a^2 * c / 2
-- c = 2 * (b - (x / a^2))
-- a = c * (sin(theta) / cos(theta))
-- tan(theta) = a / (2 * (b - (x / a^2)))
-- theta = atan(a / c)
-- theta * 180 / pi
-- 場合2 (x <= a ^ 2 * b)
-- x = a * b * d / 2
-- d = 2 * x / a / b
-- b = d * (sin(theta) / cos(theta))
-- tan(theta) = b / (2 * x / a / b) = a * b ^ 2 / x / 2
-- atan (a * b ^ 2 / x / 2) * 180 / pi

solve a b x = if x > a ^ 2 * b / 2
  then 90 - atan (a / (2 * (b - (x / a ^ 2)))) * 180 / pi
  else atan (a * b ^ 2 / x / 2) * 180 / pi

-- 以下ライブラリ

readInts :: IO [Int]
readInts = map (fst . fromJust . C.readInt) . C.words <$> C.getLine

readNInts :: Int -> IO [[Int]]
readNInts = flip replicateM readInts

readIntegers :: IO [Integer]
readIntegers = map (fst . fromJust . C.readInteger) . C.words <$> C.getLine

readNIntegers :: Int -> IO [[Integer]]
readNIntegers = flip replicateM readIntegers

getNLns :: Int -> IO [String]
getNLns = flip replicateM getLine