【spoj1026】Favorite Dice
题目描述
甩一个n面的骰子,问每一面都被甩到的次数期望是多少。
输入
第一行一个整数T,表示数据组数。
接下来T行,每行一个数n。(n≤1000)
输出
T行,每行一个数表示期望次数。保留两位小数。
样例输入
2 1 12
样例输出
1.00 37.24
题解
期望dp水题。
#include<cmath> #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #define ll long long const int maxn=1000+5; int T,n; double dp[maxn]; template<typename T>void read(T& aa){ char cc; ll ff;aa=0;cc=getchar();ff=1; while((cc<'0'||cc>'9')&&cc!='-') cc=getchar(); if(cc=='-') ff=-1,cc=getchar(); while(cc>='0'&&cc<='9') aa=aa*10+cc-'0',cc=getchar(); aa*=ff; } int main(){ read(T); while(T--){ memset(dp,0,sizeof(dp)); read(n); for(int i=n-1;i>=0;i--) dp[i]=(dp[i+1]*(n-i)+n)/(n-i); printf("%.2lf\n",dp[0]); } return 0; }