codeforces396A

sol:很显然就是找出所有质因数,然后分别塞进去就行了,怎么塞就是组合数。感觉就是道小学奥数题
#include <bits/stdc++.h>
using namespace std;
typedef int ll;
inline ll read()
{
ll s=; bool f=; char ch=' ';
while(!isdigit(ch)) {f|=(ch=='-'); ch=getchar();}
while(isdigit(ch)) {s=(s<<)+(s<<)+(ch^); ch=getchar();}
return (f)?(-s):(s);
}
#define R(x) x=read()
inline void write(ll x)
{
if(x<) {putchar('-'); x=-x;}
if(x<) {putchar(x+''); return;}
write(x/); putchar((x%)+'');
}
#define W(x) write(x),putchar(' ')
#define Wl(x) write(x),putchar('\n')
const int Mod=;
int n;
map<int,int>Map;
int num[],cnt[];
int fac[],invf[];
inline int ksm(int x,int y)
{
int ans=;
while(y)
{
if(y&) ans=1LL*ans*x%Mod;
x=1LL*x*x%Mod;
y>>=;
}return ans;
}
inline int C(int n,int m)
{
int oo;
oo=1LL*fac[n]*invf[m]%Mod*invf[n-m]%Mod;
return oo;
}
int main()
{
freopen("codeforces396A_data.in","r",stdin);
int i,j,k,x;
R(n);
fac[]=invf[]=;
for(i=;i<=;i++) fac[i]=1LL*fac[i-]*i%Mod;
invf[]=ksm(fac[],Mod-);
for(i=;i>=;i--) invf[i]=1LL*invf[i+]*(i+)%Mod;
for(i=;i<=n;i++)
{
R(x);
for(j=;j<=sqrt(x);j++) if(x%j==)
{
int oo=;
while(x%j==) {x/=j; oo++;}
if(!Map[j])
{
Map[j]=++(*num); num[*num]=j; cnt[*num]=oo;
}else cnt[Map[j]]+=oo;
}
if(x>)
{
if(!Map[x])
{
Map[x]=++(*num); num[*num]=x; cnt[*num]=;
}else cnt[Map[x]]++;
}
}
int ans=;
for(i=;i<=*num;i++)
{
ans=1LL*ans*C(cnt[i]+n-,n-)%Mod;
}Wl(ans);
return ;
}
codeforces396A的更多相关文章
- Codeforces396A - On Number of Decompositions into Multipliers
Portal Description 给出\(n(n\leq500)\)个\([1,10^9]\)的数,令\(m=\prod_{i=1}^n a_i\).求有多少个有序排列\(\{a_n\}\),使得 ...
随机推荐
- 怎样查看python的所有关键字
关键字是python中具有特定功能的一组词汇, 这些词汇不能用作变量名, 一般会有高亮提示, code时请小心. python的关键字其实也是python的语法核心, 掌握了所有python关键字的用 ...
- Java内存模型之从JMM角度分析DCL
DCL,即Double Check Lock,中卫双重检查锁定.其实DCL很多人在单例模式中用过,LZ面试人的时候也要他们写过,但是有很多人都会写错.他们为什么会写错呢?其错误根源在哪里?有什么解决方 ...
- 【转载】Sqlserver使用Right函数从最右边向前截取固定长度字符串
在SQL语句查询过程中,Sqlserver支持使用LEFT().RIGHT().SUBSTRING()等几个函数对字符串进行截取操作,其中Left函数表示从开始字符向后截取多少个字符,Right函数表 ...
- 0-1背包问题——回溯法求解【Python】
回溯法求解0-1背包问题: 问题:背包大小 w,物品个数 n,每个物品的重量与价值分别对应 w[i] 与 v[i],求放入背包中物品的总价值最大. 回溯法核心:能进则进,进不了则换,换不了则退.(按照 ...
- Eclipse workspace被锁定
重新打开Eclipse时,提示如下: Workspace Unavailable: Workspace in use or cannot be created, choose a different ...
- springboot学习入门简易版三---springboot2.0启动方式
2.4使用@componentscan方式启动 2.4.1 @EnableAutoConfiguration 默认只扫描当前类 @EnableAutoConfiguration 默认只扫描当前类,如果 ...
- Linux文件(夹)属性
ll 或者 ls -lh 查看文件属性:
- java数据类型转换的常见方法
public class Testfun { public static void main(String[] args) { // (一)跨Number父类的类型转换 // 1.str转int =& ...
- Python函数Day2
一.函数补充 只有一个参数时,变量用argv 二.动态参数 为了拓展,对于传入的实参数量不固定,需要万能参数,即动态参数 *args **kwargs 在函数定义时,在 *args为位置参数,起聚合的 ...
- Linux命令——pr
参考:Linux命令——column 前言 接触这个命令的初衷是我想把一个很长的单列输出设置成多列输出,奈何column的分列输出机制太智障,直到我发现了pr 参数 pr -# 输出指定的列数. -t ...