ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CF453A Little Pony and Expected Maximum 数学题

2021-07-10 11:05:15  阅读:199  来源: 互联网

标签:Little Pony int dd Maximum long ans 最大值 define


CF453A Little Pony and Expected Maximum 数学题

链接

这个题比较水。连我都能做出来

这个题我们直接考虑最大值为 \(k\) 时的概率是多少。

我们设 \(p_k\) 为最大值为 \(k\) 时的概率。令 \(f_k\) 表示 \(m\) 到 \(k\) 的所有值一个也没有出现的概率。

如果最大值为 \(k\) ,那么说明比 \(k\) 大的数一个也没有出现,而 \(k\) 至少出现一次。

也就是说,\(f_{k+1}\) 这个概率里包含两个部分,其中一个部分是 \(f_k\) ,也就是 \(k\) 没有出现,另一个部分是 \(k\) 至少出现一次。也就是说 \(f_{k+1}-f_{k}\) 就是 \(k\) 为最大值的概率。

我们用快速幂一算就可以。

代码:

#include<bits/stdc++.h>
#define dd double
#define ld long double
#define ll long long
#define uint unsigned int
#define ull unsigned long long
#define N 100010
#define M number
using namespace std;

const int INF=0x3f3f3f3f;

template<typename T> inline void read(T &x) {
    x=0; int f=1;
    char c=getchar();
    for(;!isdigit(c);c=getchar()) if(c == '-') f=-f;
    for(;isdigit(c);c=getchar()) x=x*10+c-'0';
    x*=f;
}

int m,n;
dd p[N],ans;

inline dd ksm(dd a,int b){
    dd res=1.0;
    while(b){
        if(b&1) res*=a;
        a=a*a;
        b>>=1;
    }
    return res;
}

int main(){
    read(m);read(n);
    p[m+1]=1;
    for(int i=m;i>=1;i--){
        p[i]=ksm((dd)(i-1)/(dd)m,n);
        ans+=(p[i+1]-p[i])*i;
    }
    printf("%lf\n",ans);
    return 0;
}

标签:Little,Pony,int,dd,Maximum,long,ans,最大值,define
来源: https://www.cnblogs.com/TianMeng-hyl/p/14993345.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有