【HDU4652】Dice(數學期望,動態規劃)
阿新 • • 發佈:2019-01-23
題面
Vjudge
有一個
詢問,連續出現
連續出現
題解
考慮兩種分開詢問來算。
第一種:
設
相鄰兩項作差,得到
按照順序列出來
…
將所有式子相加起來
所以
考慮第二種詢問
設
還是相鄰兩項作差讓後相加,算出答案
#include<cstdio>
#include<cmath>
using namespace std;
double Solve1(int m,int n){return (pow(m,n)-1.0)/(m-1.0);}
double Solve2(int m,int n)
{
double ret=1,d=1;
for(register int j=1;j<n;++j)d=1.0*m/(m-j)*d,ret+=d;
return ret;
}
int main()
{
register int T,opt,n,m;
while(scanf("%d",&T)!=EOF)while(T--)
{
scanf("%d%d%d",&opt,&m,&n);
printf("%.9lf\n",!opt?Solve1(m,n):Solve2(m,n));
}
}