#include <bits/stdc++.h>
#include <iomanip>
#define M 100005
#define MAX 100000000000000001
#define MIN -10000000000000000
#define mod 1000000007
#define ss second
#define ff first
#define ll long long int
#define pb push_back
#define ld long double
#define fast ios_base::sync_with_stdio(false);cin.tie(NULL)
using namespace std;

ld fact(ld n){
	ld ans = 1;
	for(ld i = 2;i<=n;i++){
		ans *= i;
	}

	return ans;
}

int main(){
	ld coins[3],ans = 0,total =0;
	for(int i=0;i<3;i++){
		cin>>coins[i];
		total += coins[i];
	}
	for(ld n=1;n<=300;n++){
		for(int i=0;i<3;i++){
			ld tot = total;
			int other1=1,other2=2;
			if(i == 1){
				other1 = 0;
			}
			if(i == 2){
				other2 = 0;
			}
			if(100-coins[i]<= n && 200-(total-coins[i]) > n-(100-coins[i])){
				ld probability = 1,rest = n-(100-coins[i]),p2 = 0;
				for(ld j=coins[i];j<=99;j++){
					probability *= j;
					probability /= tot;
					tot += 1;
				}
				for(ld j=0;j<=rest;j++){
					if(j+coins[other1] < 100 && rest-j+coins[other2] < 100){
						ld p3 = 1,tot2 = tot;
						for(ld k=0;k<j;k++){
							p3 *= (coins[other1]+k);
							p3 /= tot2;
							tot2 += 1;
						}
						for(ld k=0;k<rest-j;k++){
							p3 *= (coins[other2]+k);
							p3 /= tot2;
							tot2 += 1;
						}
						p2 += (p3/fact(j))/fact(rest-j);
					}
				}
				probability *= p2;
				ans += n*probability*fact(n-1)/fact(100-coins[i]-1);
				// cout<<n<<" "<<ans<<"\n";
			}
		}
	}
	cout<<fixed;
	cout<<setprecision(15)<<ans<<"\n";

	return 0;
}

// Problem: D - increment of coins
// Contest: AtCoder - AtCoder Beginner Contest 184
// URL: https://atcoder.jp/contests/abc184/tasks/abc184_d
// Memory Limit: 1024 MB
// Time Limit: 2000 ms
// Powered by CP Editor (https://github.com/cpeditor/cpeditor)

#include <bits/stdc++.h>
#define int long long
#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))
#define vi vector<int>
#define vstr vector<string>
#define vdb vector<double>
#define vbool vector<bool>
#define vvi vector<vector<int> >
#define mii map<int,int>
#define pb push_back
#define pii pair<int,int>
#define vpair vector<pii > 
#define mkp make_pair
#define scan(a,n) for(int i =0 ; i<n ; i++) cin>>a[i]
#define print(a,n) for(int i = 0 ; i < n ; i++) {cout<<a[i]<<' ';}cout<<'\n'
#define mem(a,v) memset(a,v,sizeof(a))
#define loop(i,a,b) for (int i = a; i < b; i++)
#define loope(i,a,b) for (int i = a; i <= b; i++)
#define bloop(i,a,b) for(int i = a;i>=b;i--)
#define FastIO ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
#define PRECISION std::cout.unsetf ( std::ios::fixed );std::cout.precision(9)
#define PI 3.14159265
#define S second
#define F first
#define CHECK cout<<"CHEDEDWB"<<endl
#define CHECK1(a) cout<<a<<endl
#define CHECK2(a,b) cout<<a<<' '<<b<<endl;
#define br '\n'
#define lb lower_bound
#define ub upper_bound
#define all(x) x.begin(),x.end()
using namespace std;
int mod = 1e9+7;
int inf = 1e18;
int m_inf = INT_MIN;
// int extendedgcd(int a,int b,int &x,int &y){
	// if(a == 0){
		// x = 0; y = 1;
		// return b;
	// }
	// int x1,y1;
	// int d = extendedgcd(b%a,a,x1,y1);
	// x = y1 - (b/a)*x1;y = x1;
	// return d;
// }
// int expmod(int a,int b) {
// 	if(b == 1) return a;
// 	if(b == 0) return 1;
// 	int m1 = expmod(a,b/2)%mod;
// 	if(b%2) return ((m1*m1)%mod*a%mod)%mod;
// 	return (m1*m1)%mod;
// }
// int power(int a,int b) {
// 	if(b == 1) return a;
// 	if(b == 0) return 1;
// 	int m1 = power(a,b/2);
// 	if(b%2) return m1*m1*a;
// 	return m1*m1;
// }
// int logn(int n, int r) 
// { 
//     return (n > r - 1) ? 1 + logn(n / r, r) : 0; 
// } 

// int nCr(int n,int r)
// {
	// r = min(r,n-r);
	// if(r<0)
		// return 0;
	// if(r == 0)
		// return 1;
	// int ans = 1;
	// for(int i = 1;i<=r;i++)
	// {
		// ans = ans*(n-i+1)/i;
	// }
	// return ans;
// 		
// }
// vi factmod(int n)
// {
	// vi ans(n+1);
	// ans[0] = 1;
	// loop(i,1,n+1)
	// {
		// ans[i] = (ans[i-1]*i)%mod;
	// }
	// return ans;
// }
// int nCrmod(int n,int r,vi &fact)
// {
	// int x1,y1;
	// extendedgcd(fact[r],mod,x1,y1);
	// int x2,y2;
	// extendedgcd(fact[n-r],mod,x2,y2);
	// int ans = (fact[n]*((x1+mod)%mod))%mod;
	// ans = (ans*((x2+mod)%mod))%mod;
	// return ans;
// }

// void dfs(vector<vector<int> > &adj,int root,vbool &vis)
// {
// 	vis[root] = true;
// 	for(int i = 0;i<adj[root].size();i++){
// 		int v = adj[root][i];
// 		if(!vis[v])		
// 			dfs(adj,v,vis);
// 	}
// }
double dp[101][101][101];
void solve()
{
	int a,b,c;
	cin>>a>>b>>c;
	mem(dp,0);
	dp[a][b][c] = 1;
	for(int i = 0;i<100;i++)
	{
		for(int j = 0;j<100;j++)
		{
			for(int k = 0;k<100;k++)
			{
				double p = 0;
				if(i<a || j<b || k<c)
				{
					dp[i][j][k] = 0;
				}
				else if(i == a && j == b && k == c)
					p = 1;
				else 
				{
					if(i>0)
						p += dp[i-1][j][k]*((double)(i-1)/(double)(i+j+k-1));
					if(j>0)
						p += dp[i][j-1][k]*((double)(j-1)/(double)(i+j+k-1));
					if(k>0)
						p += dp[i][j][k-1]*((double)(k-1)/(double)(i+j+k-1));	
				}
				dp[i][j][k] = p;
			}
		}
	}
	double ans = 0;
	for(int i = 0;i<=99;i++)
	{
		for(int j = 0;j<=99;j++)
		{
			dp[i][j][100] = dp[i][j][99]*(99.0/(i+j+99));
			dp[i][100][j] = dp[i][99][j]*(99.0/(i+j+99));
			dp[100][i][j] = dp[99][i][j]*(99.0/(i+j+99));
			ans+= (dp[i][j][100]*((i-a)+(j-b)+(100-c)))	;
			ans+= (dp[i][100][j]*((i-a)+(j-c)+(100-b)))	;
			ans+= (dp[100][i][j]*((100-a)+(i-b)+(j-c)))	;
		}
	}
	cout<<ans<<'\n';
		
}
int32_t main() 
{
	FastIO; PRECISION;
	int t = 1;
	// cin>>t;
	while(t--)
	{
		solve();
	}
}