#include<bits/stdc++.h>
//#include <ext/pb_ds/assoc_container.hpp> // Common file
//#include <ext/pb_ds/tree_policy.hpp> // Including tree_order_statistics_node_update

using namespace std;
//using namespace __gnu_pbds;
//typedef tree<
//        pair<int, int>, // change type
//        null_type,
//        less<pair<int, int> >, // change type
//        rb_tree_tag,
//        tree_order_statistics_node_update>
//        ordered_set;

typedef long long ll;
#define rep(i, start, end) for(int i = start; i < end; ++i)
#define sz(x) (int)(x).size()
#define pb push_back
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define clr(d, v) memset(d, v, sizeof(d))
#define pii pair<int, int>
const double PI = 3.14159265358979323846;
const double eps = (1e-8);


long double power(long double base, int exp)
{
    long double ret = 1;
    while(exp)
    {
        if (exp&1)
            ret *= base;
        base *= base;
        exp >>= 1;
    }
    return ret;
}


long double C[105][105];

void genC()
{
    C[0][0] = 1;
    for (int i = 1; i <= 100; ++i)
    {
        C[i][0] = 1;
        for (int j = 1; j < i; ++j)
            C[i][j] = C[i-1][j] + C[i-1][j - 1];
        C[i][i] = 1;
    }
}

int m, w, c;
long double p;

/*
 * i is zero based
 * Dp definition:
 * dp[i][rem] is probability to get a final even 'usedCandy' count in range [i, m) using 'rem' candies such that usedCandy = totalCandies - rem
 * base case:
 * at i == m, return isEven(usedCandy)
 * transition:
 * at each [i][rem], if 'tk' is amount given to man 'i'. 'tk' is in [0, rem]
 * answer = Summation for all 'tk' in [0, rem] -> P(man 'i' getting exactly tk candies) * dp[i + 1][rem - tk]
 * P(a man getting exactly 'tk' candies) having 'rem' candies in total can be found through binomial theorom C[rem][tk] * p^tk * q^(rem - tk) such that p is probability for
 * a person to get a single candy = 1/(m+w) and q = 1 - p 
 */

long double dp[1005][105];
bool vis[1005][105];
long double solve(int i, int rem)
{
    if (i == m)
    {
        int usedCandy = c - rem;
        return (!(usedCandy&1));
        
    }
    long double &ret = dp[i][rem];
    if (vis[i][rem])
        return ret;
    vis[i][rem] = 1;
    ret = 0;
    double p = 1.0 / (w + (m-i));
    for (int tk = 0; tk <= rem; ++tk)
    {
        ret += C[rem][tk] * power(p, tk) * power(1.0 - p, rem - tk) * solve(i + 1, rem - tk);
    }
    return ret;
}


int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
#ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
//    freopen("facebook.txt", "w", stdout);
#endif
    genC();
    while (cin >> m >> w >> c && (m || w))
    {
        clr(vis, 0);
        p = 1.0/(m+w); // probability for a person to get a single candy
        cout << fixed << setprecision(7) << solve(0, c) << '\n';
    }
    return  0;

}