/ Randle /

记录详情

Accepted


  
# 状态 耗时 内存占用
#1 Accepted 3ms 512.0 KiB
#2 Accepted 4ms 472.0 KiB
#3 Accepted 5ms 384.0 KiB
#4 Accepted 3ms 508.0 KiB
#5 Accepted 5ms 384.0 KiB
#6 Accepted 5ms 384.0 KiB
#7 Accepted 8ms 384.0 KiB
#8 Accepted 4ms 512.0 KiB
#9 Accepted 4ms 512.0 KiB
#10 Accepted 4ms 476.0 KiB

代码

#include<bits/stdc++.h>
#define eps 1e-9
inline void read(int &a)
{
	a=0;char c=getchar();
	while(c<'0'||c>'9')c=getchar();
	while(c>='0'&&c<='9')
	{
		a=(a<<1)+(a<<3)+c-'0';
		c=getchar();
	}
}
inline void write(int a)
{
	if(a<0){putchar('-');a=-a;}
	if(a>9)write(a/10);
	putchar(a%10+'0');
}
int k,n,T,i,j,c,K,x,y,mx,cnt[105];
double g[105][105],f[105][105],ans;
int main()
{
	g[0][0]=1;
	for(i=0;i<100;++i)
	for(j=0;j<=i;++j)
	{
		g[i+1][j]+=g[i][j]/2.0;
		g[i+1][j+1]+=g[i][j]/2.0;
	}
	read(n);read(c);read(K);
	mx=0;
	memset(cnt,0,sizeof(cnt));
	for (i=1;i<=K;++i)
	{
		scanf("%d%d",&x,&y);
		for(j=x;j<=y;++j)
		{
			++cnt[j];
			if(cnt[j]>mx)mx=cnt[j];
		}
	}
	memset(f,0,sizeof(f));
	f[0][1]=1;
	for(i=0;i<mx;++i)
	for(j=0;j<c;++j)
	if(f[i][j]>eps)
	for(k=0;k<c;++k)f[i+1][j*k%c]+=f[i][j]/c;
	ans=0;
	for(i=1;i<=n; ++i)
	for(j=0;j<=cnt[i];++j)
	for(k=0;k<c;++k)ans+=g[cnt[i]][j]*f[j][k]*k;
	printf("%.3lf\n",ans);
	return 0;
}

信息

递交者
类型
递交
题目
灵魂画师T2
题目数据
下载
语言
C++
递交时间
2017-11-07 14:38:22
评测时间
2017-11-07 14:38:22
评测机
分数
100
总耗时
50ms
峰值内存
512.0 KiB