#include <bits/stdc++.h>
using namespace std;
struct Point {
  double x, y;
};
int sig(double x) {
  if (fabs(x) < 1e-6) return 0;
  if (x > 1e-6) return 1;
  if (x < -1e-6) return -1;
}
double multi(Point p0, Point p1, Point p2) {
  return (p1.x - p0.x) * (p2.y - p0.y) - (p1.y - p0.y) * (p2.x - p0.x);
}
bool Insertsect(Point s1, Point e1, Point s2, Point e2) {
  if ((max(s1.x, e1.x) >= min(s2.x, e2.x)) &&
      (max(s2.x, e2.x) >= min(s1.x, e1.x)) &&
      (max(s1.y, e1.y) >= min(s2.y, e2.y)) &&
      (max(s2.y, e2.y) >= min(s1.y, e1.y)) &&
      (sig(multi(s1, e1, s2) * multi(s1, e1, e2)) <= 0) &&
      (sig(multi(s2, e2, s1) * multi(s2, e2, e1)) <= 0))
    return true;
  return false;
}
Point intersection(Point u1, Point u2, Point v1, Point v2) {
  Point ret = u1;
  double t = ((u1.x - v1.x) * (v1.y - v2.y) - (u1.y - v1.y) * (v1.x - v2.x)) /
             ((u1.x - u2.x) * (v1.y - v2.y) - (u1.y - u2.y) * (v1.x - v2.x));
  ret.x += (u2.x - u1.x) * t;
  ret.y += (u2.y - u1.y) * t;
  return ret;
}
double cross(Point a, Point b) { return a.x * b.y - a.y * b.x; }
double area_poly(Point p[], int n) {
  p[n] = p[0];
  double ret = 0.00;
  for (int i = 0; i < n; ++i) ret += cross(p[i], p[i + 1]);
  return fabs(ret) / 2.00;
}
Point change(Point t1, Point t2, double angle) {
  double a1, a2;
  a1 = cos(angle);
  a2 = sin(angle);
  Point res;
  res.x = t1.x * a1 - t1.y * a2;
  res.y = t1.x * a2 + t1.y * a1;
  return res;
}
Point p1[10], p2[10], p3[10];
int cnt = 0;
bool cmp(Point p1, Point p2) { return atan2(p1.y, p1.x) < atan2(p2.y, p2.x); }
int main() {
  int i, j;
  double w, h, angle;
  cin >> w >> h >> angle;
  if (angle > 90) {
    angle = 180 - angle;
  }
  if (angle == 0) {
    printf("%.9lf\n", w * h);
    return 0;
  }
  angle = angle * 1.0 / 180 * 3.1415926535898;
  p1[0].x = -w / 2, p1[0].y = h / 2;
  p1[1].x = -w / 2, p1[1].y = -h / 2;
  p1[2].x = w / 2, p1[2].y = -h / 2;
  p1[3].x = w / 2, p1[3].y = h / 2;
  Point orgin;
  orgin.x = orgin.y = 0.0;
  for (i = 0; i < 4; i++) {
    p2[i] = change(p1[i], orgin, angle);
  }
  for (i = 0; i < 4; i++) {
    for (j = 0; j < 4; j++) {
      if (Insertsect(p2[i], p2[(i + 1) % 4], p1[j], p1[(j + 1) % 4])) {
        p3[cnt++] =
            intersection(p2[i], p2[(i + 1) % 4], p1[j], p1[(j + 1) % 4]);
      }
    }
  }
  sort(p3, p3 + cnt, cmp);
  printf("%.9lf\n", area_poly(p3, cnt));
}
