列表

详情


NC216034. 牛清楚的裙子!!!

描述

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

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

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

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

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

求,牛清楚获得欢乐值的期望值.

输入描述

一个数t,表示t个询问。

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

t<=1e5

n<=1e7

输出描述

t行每行一个期望值

示例1

输入:

1
1

输出:

10000.0000000

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C(clang11) 解法, 执行用时: 206ms, 内存消耗: 80120K, 提交时间: 2021-01-19 17:00:58

#include <stdio.h>
int main()
{
	int i,t,n;
	double a[10000020],sum;
	a[0]=0;
	for(i=1;i<10000010;i++)
	{
		a[i]=a[i-1]+1.0/i;
	}
	scanf("%d",&t);
	while(t--)
	{  scanf("%d",&n);
		sum=10000*a[n]+(n-1)*a[n];
		printf("%.7f\n",sum);
	}
	return 0;
 } 

C++(clang++11) 解法, 执行用时: 385ms, 内存消耗: 80104K, 提交时间: 2021-01-01 09:23:56

#include <bits/stdc++.h>
using namespace std;

	const int N=1e7;
	double g[N+5];
int main()
{
	g[0]=0;
	for(int i=1;i<=N;i++)
	{
		g[i]=g[i-1]+1.0/i;
	}
	int t;
	cin>>t;
	while(t--)
	{
		int n;
		cin>>n;
		printf("%.7f\n",g[n]*(10000+n-1));
	}
}

上一题