博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CF891E Lust
阅读量:5359 次
发布时间:2019-06-15

本文共 1395 字,大约阅读时间需要 4 分钟。

CF891E Lust


鸽子更博了

Orz Itst

神仙结论:最后的答案是一开始的\(\prod a_i\)减去最后的\(\prod a_i\)。证明感性理解。Orz Itst

然后可以套生成函数,如果第\(i\)个数选了\(c_i\)次那么有\(\frac{k!}{\prod c_i!}\)种选法。所以\(f_i(x)=\sum_{j\ge 0}x^j\frac{a_i-j}{j!}\),可以套\(e\)进去。Orz Itst

多项式忘光了,Orz Itst

\(f_i(x)=\sum_{j\ge 0}x^j\frac{a_i-j}{j!}=e^x(a_i-x)\)

要求\(k!\frac{1}{n^k}[x^k]\prod f_i(x)=k![x^k]e^{nx}\prod(a_i-x)\)

\(\prod(a_i-x)\)是个\(n\)次多项式,那么只要求\(e^{nx}\)的第\(k-n\)\(k\)项即可。

有一个\(k!\)不好算,注意\([x^i]e^{nx}=\frac{n^ix^i}{i!}\),下面的阶乘和\(k!\)约分一下就可以算了。

#include
#define il inline#define vd void#define mod 1000000007il int gi(){ int x=0,f=0;char ch=getchar(); while(!isdigit(ch))f^=ch=='-',ch=getchar(); while(isdigit(ch))x=x*10+ch-'0',ch=getchar(); return f?-x:x;}il int pow(int x,int y){ int ret=1; while(y){ if(y&1)ret=1ll*ret*x%mod; x=1ll*x*x%mod;y>>=1; } return ret;}int c[5010];int main(){#ifdef XZZSB freopen("in.in","r",stdin); freopen("out.out","w",stdout);#endif int n=gi(),k=gi(),mul=1; c[0]=1; for(int i=1;i<=n;++i){ int a=gi();mul=1ll*a*mul%mod; for(int j=n;~j;--j)c[j+1]=(c[j+1]-c[j]+mod)%mod,c[j]=1ll*c[j]*a%mod; } int ans=0,invn=pow(n,mod-2); for(int i=0,pn=1,fc=1;i<=n;fc=1ll*fc*(k-i)%mod,pn=1ll*pn*invn%mod,++i)ans=(ans+1ll*c[i]*fc%mod*pn%mod)%mod; printf("%d\n",(mul-ans+mod)%mod); return 0;}

转载于:https://www.cnblogs.com/xzz_233/p/11348343.html

你可能感兴趣的文章
Ajax : load()
查看>>
MySQL-EXPLAIN执行计划Extra解释
查看>>
Zookeeper概述
查看>>
Linux自己安装redis扩展
查看>>
luoguP3414 SAC#1 - 组合数
查看>>
图片点击轮播(三)-----2017-04-05
查看>>
直播技术细节3
查看>>
《分布式服务架构:原理、设计于实战》总结
查看>>
java中new一个对象和对象=null有什么区别
查看>>
字母和数字键的键码值(keyCode)
查看>>
IE8调用window.open导出EXCEL文件题目
查看>>
Spring mvc初学
查看>>
VTKMY 3.3 VS 2010 Configuration 配置
查看>>
01_1_准备ibatis环境
查看>>
windows中修改catalina.sh上传到linux执行报错This file is needed to run this program解决
查看>>
JavaScript中的BOM和DOM
查看>>
360浏览器兼容模式 不能$.post (不是a 连接 onclick的问题!!)
查看>>
spring注入Properties
查看>>
jmeter(五)创建web测试计划
查看>>
python基本数据类型
查看>>