import std.algorithm;
import std.bigint;
import std.bitmanip;
import std.concurrency;
import std.container;
import std.conv;
import std.functional;
import std.format;
import std.math;
import std.meta;
import std.numeric;
import std.random;
import std.range;
import std.stdio;
import std.string;
import std.traits;
import std.typecons;


auto solve(double a, double b, double x) {
    const t = atan(2 * (a * a * b - x) / a ^^ 3) * 180.0 / PI;
    const s = atan((a * b * b) / 2 / x) * 180.0 / PI;
    if (a * a * b / 2.0 <= x)
        return t;
    return s;
}


void main() {
    auto input = stdin.byLine.map!split.joiner;

    double a;
    a = input.front.to!double;
    input.popFront;

    double b;
    b = input.front.to!double;
    input.popFront;

    double x;
    x = input.front.to!double;
    input.popFront;

    static if (is(ReturnType!solve == void))
        solve(a, b, x);
    else
        solve(a, b, x).writeln;
}
