#include <bits/stdc++.h>
using namespace std;
// clang-format off
using ll = int64_t;
template <class T>
istream& operator>>(istream& is, vector<T>& v) {
    for (auto& a : v) cin >> a;
    return is;
}
template <class T>
istream& operator>>(istream& is, vector<pair<T, T>>& v) {
    for (auto& a : v) cin >> a.first >> a.second;
    return is;
}
template <class T>
istream& operator>>(istream& is, vector<tuple<T, T, T>>& v) {
    for (auto& a : v) {
        T a1, a2, a3;
        cin >> a1 >> a2 >> a3;
        a = {a1, a2, a3};
    }
    return is;
}
template <class T>
ostream& operator<<(ostream& os, vector<T>& v) {
    for (auto& a : v) os << a << " ";
    os << endl;
    return os;
}
#define all(v) begin(v), end(v)
#define TRC1(a) cout << #a ":" << a
#define TRC2(a, b) TRC1(a); cout << " "; TRC1(b)
#define TRC3(a, b, c) TRC2(a, b); cout << " "; TRC1(c)
#define TRC4(a, b, c, d) TRC3(a, b, c); cout << " "; TRC1(d)
using veci = vector<int>;
using vecll = vector<ll>;
using Pi = pair<int, int>;
using Ti = tuple<int, int, int>;
#define rep(i, n) for (int i = 0; i < n; i++)
#define fore(x, v) for (auto x : v)
const int IINF = INT32_MAX;
const ll LINF = INT64_MAX;
// cout << fixed << setprecision(15);
void solve();
int main() { cout << fixed << setprecision(15); solve(); return 0; }
// clang-format on

double dp[100][100][100];

double f(int x, int y, int z) {
    if (x == 100 || y == 100 || z == 100) return 0;

    if (dp[x][y][z] != 0) return dp[x][y][z];

    int sum = x + y + z;
    double res = (double)x / sum * (f(x + 1, y, z) + 1) +
                 (double)y / sum * (f(x, y + 1, z) + 1) +
                 (double)z / sum * (f(x, y, z + 1) + 1);
    dp[x][y][z] = res;
    return res;
}

void solve() {
    double A, B, C;
    cin >> A >> B >> C;

    double ans = f(A, B, C);
    cout << ans << endl;
}

#include<iostream>
#include<iomanip>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<queue>
#include<algorithm>
using namespace std;
int A,B,C;
double f[105][105][105];
int main()
{
	scanf("%d%d%d",&A,&B,&C);
	f[A][B][C]=1;
	for(int len=A+B+C;len<=300;len++)
	{
		for(int i=A;i<=99;i++)
		for(int j=B;j<=99;j++)
		{
			int k=len-A-B;
			if(k>=C&&k<=99)
			{
				if(i) f[i+1][j][k]+=f[i][j][k]*((double)i/(i+j+k));
				if(j) f[i][j+1][k]+=f[i][j][k]*((double)j/(i+j+k));
				if(k) f[i][j][k+1]+=f[i][j][k]*((double)k/(i+j+k));
			}
		}
	}
	double ans=0;
	for(int i=0;i<=100;i++)
	for(int j=0;j<=100;j++)
	{
		ans+=(100+i+j-A-B-C)*f[100][i][j];
		ans+=(100+i+j-A-B-C)*f[i][100][j];
		ans+=(100+i+j-A-B-C)*f[i][j][100];
	}
	printf("%0.8lf",ans);
}