#include <bits/extc++.h>
using namespace std;

int main() {
  int a, b, c;
  cin >> a >> b >> c;
  double dp[101][101][101] = {};
  for (auto i = 99; i >= a; i--) {
    for (auto j = 99; j >= b; j--) {
      for (auto k = 99; k >= c; k--) {
        dp[i][j][k] = 1 + (i * dp[i + 1][j][k] + j * dp[i][j + 1][k] +
                           k * dp[i][j][k + 1]) /
                              (i + j + k);
      }
    }
  }
  cout << fixed << setprecision(10);
  cout << dp[a][b][c] << endl;
}

#include <bits/stdc++.h>
using namespace std;

typedef unsigned long long ull;
typedef long long ll;
typedef long double ld;

#define fastio() ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0)
#define test() int t;cin>>t;for(int test=1;test<=t;test++)
#define pb push_back
#define nl cout<<"\n"
#define all(x) x.begin(),x.end()

template<class C> void min_self( C &a, C b ){ a = min(a,b); }
template<class C> void max_self( C &a, C b ){ a = max(a,b); }

const ll MOD = 1000000007;
ll mod( ll n, ll m=MOD ){ n%=m,n+=m,n%=m;return n; }

const int MAXN = 1e5+5;
const int LOGN = 21;
const ll INF = 1e14;
int dx[] = {1,0,-1,0};
int dy[] = {0,1,0,-1};

template<class T1, class T2> void add( T1 &x, T2 y, ll m = MOD )
{
    x += y;
    if( x >= m )
        x -= m;
}

template<class T1, class T2> void sub( T1 &x, T2 y, ll m = MOD )
{
    x -= y;
    if( x < 0 )
        x += m;
}

ld dp[102][102][102];
int vis[102][102][102];
ld solve( int a, int b, int c )
{
    if( a == 100 || b == 100 || c == 100 )
        return 0;

    if( vis[a][b][c] != 0 )
        return dp[a][b][c];

    vis[a][b][c] = 1;
    ld go = 1.0/(a+b+c);

    ld ans = 1;

    ans += (1.0*a*go) * solve(a+1,b,c);
    ans += (1.0*b*go) * solve(a,b+1,c);
    ans += (1.0*c*go) * solve(a,b,c+1);

    return dp[a][b][c] = ans;
}

int main() 
{
    #ifdef gupta_samarth
        freopen("input.txt", "r", stdin);
        freopen("output.txt", "w", stdout);
    #endif
    fastio();

    memset(vis,0,sizeof(vis));

    int a,b,c;
    cin>>a>>b>>c;
    cout<<fixed<<setprecision(9)<<solve(a,b,c);    

    cerr << "\nTime elapsed: " << 1000 * clock() / CLOCKS_PER_SEC << "ms\n";
    return 0;
}
