zoukankan      html  css  js  c++  java
  • 20140711 loop-II 调和数列

    首先对于点x与点y 若他们之间有一条又向边

    则可将他们两个当作一个点处理

    只有一个点时 期望环的个数为1

    对于有n个点时

    点x有 1/n 的概率形成1个环 期望值为 1/n

    若点x与其他顶点y相连 相连过后即只剩 n-1 个顶点

    对于剩下的 n-1 个点

    又有 1/(n-1) 的概率形成1个环 期望值为 1/(n-1)

    所以总的期望值为 1+1/2+1/3......1/n

    对于n<=5000000的数据直接 O(n) 求值

    对于大数据 ans=ln(n)+euler (euler为欧拉常数)

     1 #include <cstdio>
     2 #include <cmath>
     3 using namespace std;
     4 #define EPS 11e-10
     5 #define euler 0.57721566490
     6 typedef long long LL;
     7 
     8 LL n,m;
     9 
    10 int main() {
    11     scanf("%lld%lld",&n,&m);
    12     if (n<=5000000) {
    13         double ans=0.0;
    14         for (LL i=1;i<=n;i++) ans+=1.0/double(i);
    15         ans=ans*double(m);
    16         printf("%d",(int)floor(ans-EPS));
    17     }
    18     else printf("%d",(int)floor((log(n)+euler)*m-EPS));
    19 }
    View Code
  • 相关阅读:
    day 1 认识js
    day2,request对象
    day3
    day 14 函数的嵌套,作用域
    命名空间(名称空间)
    day 13 函数
    day 11(2) 集合
    day 11 字典拆包
    字典
    两周英语函数(记)
  • 原文地址:https://www.cnblogs.com/fjmmm/p/3838424.html
Copyright © 2011-2022 走看看