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

// For Policy Based DS
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
// ---------------------------------------
#define endl            "\n"
#define ff              first
#define ss              second
#define int             long long
#define pb              emplace_back
#define mp              make_pair
#define pll             pair<int,int>
#define vll             vector<int>
#define vpll            vector<pair<int,int>>
#define all(c)          (c).begin(), (c).end()
#define bs              binary_search
#define pqb             priority_queue<int>
#define setbits(x)      __builtin_popcountll(x)
#define mod             1000000007
#define mem(arr,x)      memset(arr,x,sizeof(arr))
#define pi              3.14159265358979323846
#define inf             2000000000000000000
#define ps(x,y)         fixed<<setprecision(y)<<x
#define test(x)         int x; cin>>x;while(x--)

template<class A> void read(vector<A>& v);
template<class A, size_t S> void read(array<A, S>& a);
template<class T> void read(T& x) {
  cin >> x;
}
void read(double& d) {
  string t;
  read(t);
  d = stod(t);
}
void read(long double& d) {
  string t;
  read(t);
  d = stold(t);
}
template<class H, class... T> void read(H& h, T&... t) {
  read(h);
  read(t...);
}
template<class A> void read(vector<A>& x) {
  for (auto &a : x)
    read(a);
}
template<class A, size_t S> void read(array<A, S>& x) {
  for (auto &a : x)
    read(a);
}

const int d4i[4] = { -1, 0, 1, 0};
const int d4j[4] = {0, 1, 0, -1};
const int d8i[8] = { -1, -1, 0, 1, 1, 1, 0, -1};
const int d8j[8] = {0, 1, 1, 1, 0, -1, -1, -1};
void c_p_c()
{
  ios_base::sync_with_stdio(0);
  cin.tie(0); cout.tie(0);
#ifndef ONLINE_JUDGE
  freopen("input.txt", "r", stdin);
  freopen("output.txt", "w", stdout);
#endif
}
string int_to_string(int n) {
  ostringstream str1;
  str1 << n;
  string sar = str1.str();
  return sar;
}
int pow(int a, int b, int m)
{
  int res = 1;
  while (b > 0)
  {
    if (b % 2)
      res = (res * a) % m;
    a = (a * a) % m;
    b >>= 1;
  }
  return res;
}
int ncr(int  n, int k)
{ if (k == 0)
    return 1;
  if (k > n - k)
    k = n - k;
  int a = 1, b = 1, d;
  while (k)
  { a *= n; b *= k;
    d = __gcd(a, b);
    a /= d; b /= d;
    n--; k--;
  }
  return a;
}
int modinv(int k, int m)
{
  return pow(k, m - 2, m);
}
/***************************CODE BEGINS**************************************/
const int N = 102;
double dp[102][102][102];
double cal_dp(int x, int y, int z)
{
  if (x == 100 || y == 100 || z == 100) {
    return dp[x][y][z] = 0.0;
  }
  if (dp[x][y][z] != -1.0) {
    return dp[x][y][z];
  }
  int temp = x + y + z;
  double t1 = ((double)x / (double)temp) * (cal_dp(x + 1, y, z) + 1.0);
  double t2 = ((double)y / (double)temp) * (cal_dp(x, y + 1, z) + 1.0);
  double t3 = ((double)z / (double)temp) * (cal_dp(x, y, z + 1) + 1.0);
  return dp[x][y][z] = t1 + t2 + t3;
}
void solve ()
{
  int a, b, c;
  read(a, b, c);
  for (int i = 0; i <= 101; i++) {
    for (int j = 0; j <= 101; j++) {
      for (int k = 0; k <= 101; k++) {
        dp[i][j][k] = -1.0;
      }
    }
  }
  cout << ps(cal_dp(a, b, c), 8);
}
int32_t main()
{
  c_p_c();
  // test(x)
  solve();
  return 0;
}
#include <bits/stdc++.h>
using namespace std;

#define vi vector<int>
#define ff first
#define ss second
#define pb push_back
#define setbits(x) __builtin_popcountll(x)
#define zrobits(x) __builtin_ctzll(x)
#define ps(x) fixed << setprecision(10) << x
#define mod 1000000007
#define inf 1e18
#define w(tc)  \
    int tc;    \
    cin >> tc; \
    for (int i = 1; i <= tc; ++i)
#define PI 3.14159265358979323846264338327950L
#define span(a) begin(a), end(a)
#define ll long long

const int N = 100 + 10;
double dp[N][N][N];

double calc(int a, int b, int c) {
	if (a >= 100 or b >= 100 or c >= 100)
		return 0;

	double ret = dp[a][b][c];
	if (ret >= 0) return dp[a][b][c] = ret;

	double sum = a + b + c;
	ret = 1 + a / sum * calc(a + 1, b, c) + b / sum * calc(a, b + 1, c) + c / sum * calc(a, b, c + 1);
	
	return dp[a][b][c] = ret;
}

inline void solve() {
	memset(dp, -1, sizeof(dp));

	int a, b, c; cin >> a >> b >> c;
	double ans = calc(a, b, c);
	cout << ps(ans);
}

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	//w(tc)
		solve();
	return 0;
}