#include <bits/stdc++.h>
using namespace std;
int nextInt() {
  int x;
  scanf("%d", &x);
  return x;
}
char s[1000100];
double solveDp(int n, int m, int k) {
  int N = n + m;
  vector<vector<double> > f(n + m + 1 + k, vector<double>(n + m + 1 + k, 0));
  for (int i = 0; i <= n + m; ++i) {
    f[0][i] = 1;
  }
  for (int i = 1; i <= n + m; ++i) {
    for (int j = 0; j <= n + m; ++j) {
      int t = i + j - n + m - k;
      if (t % 2 != 0 || t < 0 || t > 2 * n) {
        continue;
      }
      int restX = t / 2;
      int restY = i - restX;
      if (restY < 0) {
        continue;
      }
      double p1 = (double)restX / (restX + restY);
      double p2 = 1 - p1;
      if (j - 1 >= 0) {
        f[i][j] += p1 * f[i - 1][j - 1];
      }
      if (j + 1 <= n + m) {
        f[i][j] += p2 * f[i - 1][j + 1];
      }
    }
  }
  return f[n + m][k];
}
double solve(int n, int m, int k) {
  if (k < 0) {
    return 0;
  }
  if (k == 0) {
    if (n < m) {
      return 0;
    }
    double res = (n - m + 1.0) / (n + 1);
    return res;
  }
  double f1 = solve(n + 1, m - 1, k - 2) * m / (n + m + 1);
  double f2 = solve(n + 1, m, k - 1);
  double res = (f2 - f1) * (n + m + 1) / (n + 1);
  return res;
}
int main() {
  int n = nextInt();
  int m = nextInt();
  int k = nextInt();
  double res = solve(n, m, k);
  printf("%.10lf\n", res);
  return 0;
}
