{题解}[jzoj3885]【长郡NOIP2014模拟10.22】搞笑的代码

来源:互联网 发布:百度贴吧获取数据失败 编辑:程序博客网 时间:2024/06/02 17:56

传送门

Analysis

其实吧 出题人已经够友善啦
友情

出题人已经把方程给了 我们尝试写出来

f(i)i

f(i)=[(f(i1)+1)nin]+[(f(i)+1)in]

随便化简一下
我们发现f[i]=f(i1)+nni
这样的时间是O(n)

涨姿势 欧拉常数+ln(i)约等于原式中的调和级数
因为精度不卡
所以说…

Code

#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define oo 2139062143using namespace std;const double Eule = 0.57721566490153286060651209;double ans;long long n; int main(){    scanf("%lld", &n);    ans = 0;    if (n <= 10000000)    {        for (long long i = 1;i <= n;i ++)            ans += (double)1 / (double)(i);    }    else        ans = log((double)n) + Eule;    printf("%.0lf", ans * n);}
1 0
原创粉丝点击