博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 4390 Number Sequence(容斥原理+组合计数)
阅读量:5865 次
发布时间:2019-06-19

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

题目链接:

题意:给出n个数字b1,b2,……,bn。求有多少个有序序列a1,a2,……,an,满足b1*b2*……*bn=a1*a2*……*an?(ai>1)

思路:首先分解质因数,存下每个质因子出现的次数。其次,容斥原理还是比较好想的,设f[n]表示n个数字(可以有1),那么

P是出现的素数集合。f[n]的计算是这样的。对于每个素数,其出现的次数m,那么就相当于将m个无区别的物品放到n个有区别的盒子,为C(n+m-1,n-1)。

int a[N][2],aNum;void add(int x,int t){    int i;    for(i=1;i<=aNum;i++)    {        if(a[i][0]==x)        {            a[i][1]+=t;            return;        }    }    aNum++;    a[aNum][0]=x;    a[aNum][1]=t;}i64 C[N][N];void init(){    int i,j;    C[0][0]=1;    for(i=1;i
1) add(n,1);}i64 cal(int t){ i64 ans=1,i; FOR1(i,aNum) (ans*=C[t+a[i][1]-1][t-1])%=mod; return ans;}int main(){ init(); Rush(n) { aNum=0; int i,x; FOR1(i,n) RD(x),deal(x); i64 ans=0; for(i=0;i

  

 

 

转载地址:http://tbynx.baihongyu.com/

你可能感兴趣的文章
Bruck:一个Web界面布局原型设计框架\n
查看>>
Microsoft 365及应用开发的未来:微软BUILD 2018大会第二天主题演讲
查看>>
敏捷2016大会主题演讲:现代敏捷
查看>>
Rust 1.27支持SIMD
查看>>
Beaker:一个基于Electron的点对点Web浏览器
查看>>
有赞HBase技术实践:读流程解析与优化
查看>>
敏捷心态到底是什么?
查看>>
AlphaZero进化论:从零开始,制霸所有棋类游戏
查看>>
俄罗斯世界杯直播背后的技术趋势
查看>>
React-Native痛点解析之开发环境搭建及扩展
查看>>
.NET 4.6的RyuJIT编译器中又发现两个严重的Bug
查看>>
热门云服务超87GB电子邮箱和密码泄露,黑客已验证大部分数据
查看>>
Netty防止内存泄漏措施
查看>>
.NET Core 2.0 Preview 2为开发人员带来改进
查看>>
Visual Studio 15.7预览版4改进Git、C++支持
查看>>
2018年开源状况:代码贡献超310亿行,而漏洞超16000个
查看>>
依赖类型语言Idris发布1.0版本
查看>>
微软宣布针对Azure Cosmos DB的多个更新
查看>>
Mozilla将主攻WebAssembly的性能和特性
查看>>
Jare.io,一个即时和免费的CDN
查看>>