CodeForces 397C On Number of Decompositions into Multipliers(组合数学)
来源:互联网 发布:网络机柜的流程 编辑:程序博客网 时间:2024/06/05 15:49
题目链接:【CodeForces 397C】
输入n个数,先求出n个数的乘积m,求将m分成n个因子相乘的形式有几种分法(35可以分成1*35||35*1||5*7||7*5)
每输入一个数,都将这个数的质因子的个数记录下来
计算每种质因子的分配发方案数,每种质因子的方案数的乘积就是所求的答案
假设质因子x有num个,将这num个数分配到n个位置中的方案数是c(n+num-1,n-1)
ps:公式c(n+num-1,n-1)的由来(高中学过的)
将num个相同的红球放到n个盒子里去,每个盒子可以装多个球,也可以不装球,问有多少种放球的方式?
将设每个盒子里面原本就有1个球,将这n个球取出,和num个球混合在一起,那么球的总数就是m=num+n,我们要求的就转化为将m个相同的红球放到n个盒子里的方法有多少种?每个盒子至少有一个球!答案显然就是c(m-1,n-1)
#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include <string>#include <map>using namespace std;#define ll __int64const ll mod=1e9+7;map<int, int>mp;map<int, int> :: iterator it;int n;ll c[17010][501];void dec(int m){for(int i=2; i*i<=m; i++){while(m%i==0){mp[i]++;m/=i;}}if(m>1) mp[m]++;} void init(){c[0][0] = 1;for(int i=1; i<17000; i++){for(int j=0; j<=min(i, 500); j++){if (j == 0 || j == i) c[i][j] = 1;else c[i][j] = (c[i-1][j]+c[i-1][j-1])%mod;}}mp.clear();}int main(){init();cin>>n;int a;for(int i=0; i<n; i++){cin>>a;dec(a);}ll ans = 1;for(it=mp.begin(); it!=mp.end(); it++){int num = (*it).second;ans = (ans*c[num+n-1][n-1])%mod;}cout<<ans<<endl;return 0;}
0 0
- CodeForces 397C On Number of Decompositions into Multipliers(组合数学)
- Codeforces 396A On Number of Decompositions into Multipliers(组合数学)
- codeforces 396A A. On Number of Decompositions into Multipliers(组合数学+数论)
- CF 396A On Number of Decompositions into Multipliers(组合数学)
- codeforces#232_div2_C On Number of Decompositions into Multipliers 数论 组合计数
- Codeforces-396A - On Number of Decompositions into Multipliers-组合计数
- 解题报告: Codeforces 396A. On Number of Decompositions into Multipliers 组合
- Codeforces Round #232 (Div. 2) C. On Number of Decompositions into Multipliers 之我为何如此菜
- CF 396A On Number of Decompositions into Multipliers 解题报告(质因数分解+组合数计算)
- 396AOn Number of Decompositions into Multipliers 组合
- CF 396A On Number of Decompositions into Multipliers
- CF 396A On Number of Decompositions into Multipliers
- CodeForce 396A On Number of Decompositions into Multipliers
- Codeforces 615D Multipliers 【组合数学】
- CodeForces - 615D Multipliers 费马小定理+组合数学
- CodeForces 57 C.Array(组合数学)
- CodeForces 40 E.Number Table(组合数学)
- 【CodeForces】554C - CodeForces 554C(组合数学)
- css selection改变文字反选的背景颜色
- 读取和解析XML数据----读取XML DocumentBuilderFactory
- MLA Review之一: KNN算法
- 面向过程和面向对象及面向对象的三大特征
- Windows下Python环境搭建,IDE:Eclipse+Pydev+Flask
- CodeForces 397C On Number of Decompositions into Multipliers(组合数学)
- HTTP状态码详解
- IOS开发中的几种设计模式介绍
- 【C语言】PCM音频数据处理---左右声道分离
- JAVA中的反射机制
- (3) Python 内置类型 –- 元组
- NSDate日期时间类
- Object-C self = [super init]
- 修改Chrome的User Agent