#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
long double fac[100010];
void init(){
for(int i=1;i<100010;i++)
fac[i]=fac[i-1]+log((long double)i);
}
double solve(int n,int k){
if(n==1) return 0;
if(n-2*k-1<=0) return n;
double res=0;
for(int i=1;i<=n;i++){
int x=max(i-k-1,0)+max(n-(i+k),0);
if(x>=2*k){
res+=exp(fac[x]-fac[x-2*k]+fac[n-2*k-1]-fac[n-1]);
}
}
return n-res;
}
int main(){
int t=1,n,k;
init();
while(~scanf("%d%d",&n,&k)&&(n+k)){
printf("Case %d: %.4f\n",t++,solve(n,k));
}
}
uva 11637
最新推荐文章于 2018-07-23 12:36:00 发布