1145 so you want to be a 2n-aire.cpp

来自「ACM 威士忌部分答案」· C++ 代码 · 共 27 行

CPP
27
字号
//不懂计算期望的过程 
#include <math.h>
#include <stdio.h>

int n,k; 
double p,w,t;

int main()
{
	while ( scanf("%d%lf",&n,&p)==2 ) 
	{
		if (!n) break;
		w = 1<<n; // 2^n
    	for(k=n-1;k>=0;k--) 
		{
			t = (1<<k)/w;
			if (p >= t) 
				w = (p+1)/2*w;
			else 
				w = (1<<k) * (t-p)/(1-p) + w * (t+1)/2 * (1-t)/(1-p);
    	}
    	printf("%0.3lf\n",w);
	}
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?