#include <iostream>
#include <iomanip>
using namespace std;

int a, b, c;
double p[101][101][101];
double m = 0;

int main() {
    cin >> a >> b >> c;
    
    p[a][b][c] = 1;
    
    for(int i = a; i < 100; i++){
        for(int j = b; j < 100; j++){
            for(int k = c; k < 100; k++){
                p[i + 1][j][k] += p[i][j][k] * (double)i / (double)(i + j + k);
                p[i][j + 1][k] += p[i][j][k] * (double)j / (double)(i + j + k);
                p[i][j][k + 1] += p[i][j][k] * (double)k / (double)(i + j + k);
            }
        }
    }
    
    for(int j = b; j < 100; j++){
        for(int k = c; k < 100; k++){
            m += p[100][j][k] * (100 - a + j - b + k - c);
        }
    }
    
    for(int i = a; i < 100; i++){
        for(int k = c; k < 100; k++){
            m += p[i][100][k] * (i - a + 100 - b + k - c);
        }
    }

    for(int i = a; i < 100; i++){
        for(int j = b; j < 100; j++){
            m += p[i][j][100] * (i - a + j - b + 100 - c);
        }
    }
    
    cout << setprecision(10) << m << endl;
}

#include<bits/stdc++.h>
using namespace std;
map<tuple<int,int,int>,double> M;
double T(int A,int B,int C,double K){
    if(K == 0) return 0;
    if(M[make_tuple(A,B,C)] > 0){
        return M[make_tuple(A,B,C)] * K;
    }
    if(A >= 100 || B >= 100 || C >= 100){
        return K;
    }
    double S = 0,Q = 1.0 / (A + B + C);
    if(A != 0){
        S += T(A + 1,B,C,Q * A);
    }
    if(B != 0){
        S += T(A,B + 1,C,Q * B);
    }
    if(C != 0){
        S += T(A,B,C + 1,Q * C);
    }
    M[make_tuple(A,B,C)] = S + 1;
    return K * (S + 1);
}
int main(){
    int A,B,C;
    cin >> A >> B >> C;
    double ans = 0.0;
    ans = T(A,B,C,1.0);
    cout << fixed << setprecision(15) << ans - 1.0 << endl;
}
