#include <bits/stdc++.h>
using namespace std;
struct point {
  long double x, y;
  point operator-(point o) {
    point ret;
    ret.x = x - o.x;
    ret.y = y - o.y;
    return ret;
  }
  point rotate(long double a) {
    point ret;
    ret.x = x * cos(a) - y * sin(a);
    ret.y = y * cos(a) + x * sin(a);
    *this = ret;
    return ret;
  }
  point operator+=(point o) {
    x += o.x;
    y += o.y;
    return *this;
  }
  point operator*(long double c) {
    point ret;
    ret.x = x * c;
    ret.y = y * c;
    return ret;
  }
};
long double w, h, a;
point p1, p2;
point pp2;
long double ans = 0;
bool findd = false;
long double eps = 1e-12;
void calc1() {
  if (findd) return;
  if (p1.y <= -h + eps) {
    ans = (2 * h * h) / sin(a);
    findd = true;
    return;
  }
  if (p2.y <= h + eps) {
    ans = (2 * w * w) / sin(a);
    findd = true;
    return;
  }
  if (p1.x < -w) p1 += (p2 - p1) * ((-w - p1.x) / (p2 - p1).x);
  if (p2.y > h) {
    double dd = (h - p2.y) / (p1 - p2).y;
    ans += fabs(dd * (p1 - p2).x) * h;
    p2 += (p1 - p2) * dd;
  }
  ans += fabs(p2.x - p1.x) * (h + p1.y) / 2;
}
void calc2() {
  p1.x = w;
  p1.y = -h;
  p1.rotate(a);
  p1.x = -p1.x;
  p2 = pp2;
  p2.x = -p2.x;
  calc1();
}
int main() {
  double ww, hh, aa;
  scanf("%lf%lf%lf", &ww, &hh, &aa);
  w = ww;
  h = hh;
  a = aa;
  if (a > 90) a = 180 - a;
  if (fabs(a) <= eps) {
    double anss = w * h;
    printf("%.10lf\n", anss);
    return 0;
  }
  a = a / 180 * acos(-1);
  w /= 2;
  h /= 2;
  p1.x = -w;
  p1.y = h;
  p1.rotate(a);
  p2.x = w;
  p2.y = h;
  p2.rotate(a);
  pp2 = p2;
  calc1();
  calc2();
  double anss = ans * 2;
  printf("%.10lf\n", anss);
}
