UVA 11427 Expect the Expected

白书上的题目,我自己TLE了一发,对照代码时发现竟然是数组开大了,而且每次初始化都是用memset,,,怪不得会TLE,以后不会乱开大数组了。。。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#define eps 0.000001
using namespace std;
int i,j,k,n,m,x,y,T,big,cas,pm,pz;
double ans,d[105][105],p;
bool flag;
int main()
{
	scanf("%d",&T);
	for (cas=1;cas<=T;cas++)
	{
		scanf("%d/%d %d",&pz,&pm,&n);
		memset(d,0,sizeof(d));
		d[0][0]=1;
		p=(double)pz/pm;
		for (i=1;i<=n;i++)
		{
			d[i][0]=d[i-1][0]*(1-p);
			for (j=1;j*pm<=i*pz;j++)
			{
				d[i][j]=d[i-1][j]*(1-p)+d[i-1][j-1]*p; 
			}
		}
		ans=0;
		for (i=0;i*pm<=n*pz;i++)
		{
			ans+=d[n][i];
		}
		printf("Case #%d: %d\n",cas,(int)(1/ans));
	}
}


 

posted @ 2014-08-10 22:53  zhyfzy  阅读(136)  评论(0编辑  收藏  举报