fun main(args: Array<String>) {
    val (a, b, x) = readLine()!!.split(" ").map { it.toInt() }
    val v = a * a * b
    val naname = Math.sqrt((a * a + b * b).toDouble())
    fun bsearch(s: Double, e:Double) : Double {
        if (Math.abs(s - e) < 0.0000001) return s
        val mid = s + (e - s) / 2
        val l1 = length(a, mid)
        val v2 = if (l1 < naname) {
            v - (vol(a, mid) * a)
        } else {
            vol(b, 90 - mid) * a
        }
        if (v2 < x.toDouble()) {
            return bsearch(s , mid)
        } else {
            return bsearch(mid, e)
        }
    }
    println(bsearch(0.toDouble(), 90.toDouble()))
}

fun vol(x: Int, a: Double) : Double {
    return length2(x,a) * x / 2
}

fun length(x: Int, a: Double): Double {
    return x / Math.cos(Math.toRadians(a))
}

fun length2(x: Int, a: Double): Double {
    return x * Math.tan(Math.toRadians(a))
}