牛清楚的裙子!!!

链接:https://ac.nowcoder.com/acm/contest/9854/H
来源:牛客网

牛清楚有n条不同颜色的裙子

其中有红的,蓝的,绿的,白的,黑的,紫的,绿的等等…

普通裙子穿上之后牛清楚会获得1点欢乐值

但是当牛清楚穿上绿色(代号为1)的裙子后,竟然可以获得10000点欢乐值!(绿色裙子一定存在)

每分钟牛清楚会从裙子随机挑选一条,然后放回.当把所有裙子都至少穿过一遍后,停下来.

求,牛清楚获得欢乐值的期望值.
输入描述:
一个数t,表示t个询问。

接下来t行,每行一个数n,代表牛清楚有n条不同颜色的裙子,且一定有绿色裙子.

t<=1e5

n<=1e7
输出描述:
t行每行一个期望值
示例1
输入
复制
1
1
输出
复制
10000.0000000
备注:
输出t行,每行是欢乐值的期望,保留七位小数。
你只需要保证误差在1e-6内即可

double f[N]; //表示穿完前n件衣服每件衣服需要穿的期望
性质:每件衣服穿的次数的期望都是相等的

#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
#define max(a, b) ((a) > (b) ? (a) : (b))
#define min(a, b) ((a) < (b) ? (a) : (b))
#define x first
#define y second
typedef __int128 INT;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int, int> PII;
typedef pair<LL, LL> PLL;
const int N = 1e7 + 10;
const int Mod = 1e9 + 7;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int P = 13331;
double f[N];   //±íʾ´©ÍêÇ°n¼þÒ·þÿ¼þÒ·þÐèÒª´©µÄ´ÎÊýµÄÆÚÍû 
int main(){
     
	for (int i = 1; i <= N; i ++)      f[i] = f[i - 1] + 1.0 / i;
		int T;
	scanf("%d", &T);
		while(T --){
     
			int n;
		scanf("%d", &n);
		
		double ans = (f[n] * (n + 9999.0));
		
		printf("%.7lf\n", ans);
	}
		return 0;
}

你可能感兴趣的:(补题)