题目
题解
dp[i][j]代表前i个数和为j的概率,用均匀分布转移即可
卡1e8刚刚好叭应该是
这种简单的代码 想不到dp数组的构造含义 真是菜啊
代码
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
double dp[105][10005];
int n,a,b,x;
int mn,mx;
double p;
int main()
{
scanf("%d%d%d%d",&n,&a,&b,&x);
p=1.0/(b-a+1);
mn=a;mx=b;
for(int i=mn;i<=mx;++i)
dp[1][i]=p;
for(int i=1;i<=n-1;++i)
{
for(int j=mn;j<=mx;++j)
{
for(int k=a;k<=b;++k)
dp[i+1][j+k]+=dp[i][j]*p;
}
mn+=a;mx+=b;
}
printf("%.4lf\n",dp[n][x]);
return 0;
}