Problem F 合并石子

合并石子

https://ac.nowcoder.com/acm/contest/9692/F

Problem F 合并石子
一共有 堆石子,故合并时产生 种情况;
次合并时共有 堆石子,故选取两堆的期望和为 ;
故消耗体力总和为

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define M 1000000007

ll ksm(ll a,ll p){
    ll res=1;
    while(p){if(p&1){res=res*a%M;}a=a*a%M;p>>=1;}return res;
}

int i;
ll n,res,tmp;

int main(){
    scanf("%d",&n);
    for(i=2;i<=n;i++){
        res+=ksm(i,M-2)*n%M;
    }
    for(i=1;i<=n-1;i++){
        res=res*i%M;
    }
    printf("%lld",res*2%M);
}
全部评论
能否详解一下 第 i 次合并时共有 n+1−i 堆石子,故选取两堆的期望和为 2n/(n+1−i)
点赞 回复 分享
发布于 2021-01-20 16:51

相关推荐

找不到工作死了算了:没事的,雨英,hr肯主动告知结果已经超越大部分hr了
点赞 评论 收藏
分享
8 1 评论
分享
牛客网
牛客企业服务