#include <bits/stdc++.h>
using namespace std;
const double Pi = acos(-1.0);
inline int cmp(double x, double y = 0, double tol = 1e-8) {
  return (x <= y + tol) ? (x + tol < y) ? -1 : 0 : 1;
}
struct point {
  double x, y;
  point(double x = 0, double y = 0) : x(x), y(y) {}
  point operator+(point q) { return point(x + q.x, y + q.y); }
  point operator-(point q) { return point(x - q.x, y - q.y); }
  point operator*(double t) { return point(x * t, y * t); }
  point operator/(double t) { return point(x / t, y / t); }
  double operator*(point q) { return x * q.x + y * q.y; }
  double operator%(point q) { return x * q.y - y * q.x; }
  double mod() { return sqrt(x * x + y * y); }
  point rotate(double t) {
    return point(x * cos(t) - y * sin(t), x * sin(t) + y * cos(t));
  }
  int cmp(point q) const {
    if (int t = ::cmp(x, q.x)) return t;
    return ::cmp(y, q.y);
  }
  bool operator==(point q) const { return cmp(q) == 0; }
  bool operator!=(point q) const { return cmp(q) != 0; }
  bool operator<(point q) const { return cmp(q) < 0; }
  static point pivot;
};
point point::pivot;
double poly_area(vector<point>& T) {
  double s = 0;
  int n = T.size();
  for (int i = 0; i < n; i++) s += T[i] % T[(i + 1) % n];
  return s / 2;
}
point line_intersect(point p, point q, point r, point s) {
  point a = q - p, b = s - r, c = point(p % q, r % s);
  return point(point(a.x, b.x) % c, point(a.y, b.y) % c) / (a % b);
}
vector<point> halfplane(vector<point>& p, pair<point, point> semiplano) {
  vector<point> q;
  point p1 = semiplano.first, p2 = semiplano.second;
  int n = p.size();
  for (int i = 0; i < n; i++) {
    double c = (p2 - p1) % (p[i] - p1);
    double d = (p2 - p1) % (p[(i + 1) % n] - p1);
    if (cmp(c) >= 0) q.push_back(p[i]);
    if (cmp(c * d) < 0)
      q.push_back(line_intersect(p1, p2, p[i], p[(i + 1) % n]));
  }
  return q;
}
int main() {
  point p, o, r;
  double deg, PI = acos(-1), w, h;
  o.x = 0, o.y = 0;
  cin >> w >> h >> deg;
  deg = deg / 180 * PI;
  vector<point> rec1, rec2;
  rec1.push_back(point(-0.5 * w, -0.5 * h));
  rec1.push_back(point(-0.5 * w, 0.5 * h));
  rec1.push_back(point(0.5 * w, 0.5 * h));
  rec1.push_back(point(0.5 * w, -0.5 * h));
  rec2 = rec1;
  for (int i = 0; i < 4; i++) rec2[i] = rec2[i].rotate(deg);
  for (int i = 0; i < 4; i++)
    rec1 = halfplane(rec1, make_pair(rec2[(i + 1) % 4], rec2[i]));
  double ans = fabs(poly_area(rec1));
  printf("%.6llf\n", ans);
  return 0;
}
