• P5147-数学-随机数生成器


    P5147-数学-随机数生成器

    (洛谷第一篇题解说这是高一数学题,新高二感觉到被吊打)

    我们设work(x)的期望值为(f_x)

    注意(f_1)是边界。不过对下列式子没有影响。原因参照必修的数列

    那么(displaystyle f_n=1+frac{1}{n}sum_{i=1}^{n}f_i)

    移项得到(displaystyle f_n=frac{n}{n-1}+frac{1}{n-1}sum_{i=1}^{n-1}f_i)

    (S_x)(sum_{i=1}^{x})

    原式即为

    (displaystyle f_n=frac{n}{n-1}+frac{1}{n-1}S_{n-1})

    通过高一的数学知识化简一下

    (displaystyle f_n=1+sum_{i=1}^{n-1}frac{1}{i})

    发现这玩意就是个(伪)调和级数加1.

    推出了通项公式!可以(O(1))求解了……吗?

    看看n的范围然后会发现直接求后面这堆东西会死人的。

    但是,调和级数我们还是懂的。当n趋近于正无穷时,后面这堆东西近似于调和级数。那么我们把它就当做是好了。

    欧拉常数

    (gamma=0.57721 56649 01532 86060 65120 90082 40243 10421 59335)

    img

    我们知道了欧拉常数,然后就解决了。

    #include<cstdio>
    #include<iostream>
    #include<cmath>
    using namespace std;
    int main(){
    	int n;
    	double ans=0;
    	scanf("%d",&n);
    	if(n<100000)for(int i=1;i<n;i++)ans+=1.0/i;//范围较小时会有较大误差,暴力即可
    	else ans=log(n)+0.577215664901532;
    	printf("%.5f",n==1?0:ans+1);
    	return 0;
    }
    
  • 相关阅读:
    「总结」容斥。二.反演原理 3.约数容斥
    「总结」容斥。二.反演原理 2.组合容斥
    「总结」容斥。二.反演原理 1.子集容斥
    「总结」容斥。一.容斥原理
    「考试」num (破800纪念)
    「刷题」 网络
    「考试」 Or
    「考试」weight
    「刷题」GERALD07加强版
    「刷题」Triple
  • 原文地址:https://www.cnblogs.com/BrotherHood/p/13495071.html
Copyright © 2020-2023  润新知