Card
这题其实是直接用定义
E(n)表示n天的价值期望
E ( n ) = ∑ i = 1 n p [ i ] ∗ i E(n)=\sum_{i=1}^{n}p[i]*i E(n)=∑i=1np[i]∗i
其中p[i]表示至少有一个i的概率
根
据
小
学
数
学
知
识
,
至
少
有
一
个
可
以
从
反
面
考
虑
,
然
后
用
1
减
去
根据小学数学知识,至少有一个可以从反面考虑,然后用1减去
根据小学数学知识,至少有一个可以从反面考虑,然后用1减去
即
有
p
[
i
]
=
1
−
(
1
−
1
/
p
)
b
即有p[i]=1-(1-1/p)^b
即有p[i]=1−(1−1/p)b
因
为
取
了
一
个
又
放
回
去
,
所
以
每
个
i
的
概
率
是
一
样
的
,
所
以
可
以
将
p
提
出
来
,
剩
下
的
求
和
因为取了一个又放回去,所以每个i的概率是一样的,所以可以将p提出来,剩下的求和
因为取了一个又放回去,所以每个i的概率是一样的,所以可以将p提出来,剩下的求和
#include<cstdio>
using namespace std;
const int N=1e5+5;
double n,p;
int b;
double ksm(double x, int pow){
double ans=1,res=x;//
while( pow ){
if(pow&1) ans= ans * res;
res = res * res;
pow>>=1;
}
return ans ;
}
int main(){
int T;
scanf("%d",&T);
int id=1;
while(T--){
double ans=0;
scanf ("%lf%d",&n,&b);
p=(double)1-double(ksm(((double)1-(double)1 /(double)n),b));
ans=p*((n*(n+1))/2);
printf("Case #%d: %.3lf\n",id++,ans);
}
}
注意:原OJ卡bits,还有一定要看好输出格式
进阶题:杂题