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

// m<10^4 ？
// n<100  ？

int main(){
	int n,m,cut;
	while(cin>>n>>m>>cut && n&&m){
		vector<int> dp(n*m+1,0), tmp(n*m+1,0);
		dp[0]=1;


		for(int i=1; i<=n; i++){
			// サイコロ：i個

			for(int j=(i*m); j>=i; j--){
				// サイコロi個で出せる目の値：j

				for(int k=1; k<=m; k++){
					// サイコロの目：1~m
					// サイコロ1個抜いてみた値：(j-k)
					if(j-k>=0){
						// j-k が出せる
						// そうなら、当然 j も出せる
						tmp[j] += dp[j-k];
						// tmpに一時退避させておく
					}
				}
			}

			for(int j=0; j<=i*m; j++){
				// 一時退避させといたやつをdpに戻す
				dp[j]=tmp[j];
				tmp[j]=0;
			}
		}

		// dp[i] : n個のサイコロの目の合計値が(i)になる場合の数

		double under=0, over=0;
		for(int i=1; i<=n*m; i++){
			under += dp[i];
			over += dp[i] * max(i-cut,1);
		}

		printf("%.8lf\n",over/under);
	}

	return 0;
}

