fzu 2257 saya的小熊饼干

时间:2022-11-26 08:00:29

https://vjudge.net/problem/FZU-2257

题意:略

思路:

看题解补的题。正难则反的思想求概率。

首先,由于各维数之间是独立的。所以以x为例。首先,计算可以取到(i,j)的概率,取不到i的概率是同时取i的上面或者下面即((i-1) * (i-1) + (n-i)*(n-i)) /(n*n);那么可以取到i的概率就是1.0 - ((i-1) * (i-1) + (n-i)*(n-i)) /(n*n);y同理。

之后p(i,j)计算出来之后,那么1.0 - p(i,j)就是取不到这个点的概率,那么k次取不到这个点的概率就是pow(1.0 - p(i,j),k),那么1.0 - pow(1.0 - p(i,j),k)就是取k次能够取到这个点的期望啦,把每个格子的期望加起来就可以了。

代码:

 #include <stdio.h>
#include <string.h>
#include <math.h> double f(int x,int n)
{
double cant = 1.0 * (1.0 * (x-) * (x - ) + 1.0 * (n-x) * (n-x)) / (1.0 * n * n); return 1.0 - cant;
} int main()
{
int k,m,n; while (scanf("%d%d%d",&k,&n,&m) != EOF)
{
double ans = ;
for (int i = ;i <= n;i++)
for (int j = ;j <= m;j++)
{
double tmp = f(i,n) * f(j,m); ans = ans + 1.0 - pow(1.0-tmp,k);
} printf("%.0f\n",ans);
} return ;
}