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);
}
京公网安备 11010502036488号