动态规划
#include<stdio.h>
double dp[101][100*101+1];
int main()
{
int a,b,x,i,j,n,k;
scanf("%d%d%d%d",&n,&a,&b,&x);
if(x<n*a||x>n*b)
printf("0.0000\n");
else
{
for(int i=2;i<=n;i++)
for(int j=i*a;j<=i*b;j++)
dp[i][j]=0.0;
for(int j=a;j<=b;j++)
dp[1][j]=1.0/(b-a+1);
for(int i=1;i<n;i++)
for(int j=i*a;j<=i*b;j++)
for(k=a;k<=b;k++)
dp[i+1][j+k]+=dp[i][j]*1.0/(b-a+1);
printf("%.4lf",dp[n][x]);
}
return 0;
}