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\}\),使得 ...
随机推荐
- winfrom 集成krpano 项目 添加折线
C#.NET WinFrom开发之嵌入Google浏览器 (CefSharp) 引入静态页面 CefWebBrowser = new ChromiumWebBrowser("http://& ...
- ClickOnce 部署 API 以编程方式检查应用程序更新
private void InstallUpdateSyncWithInfo() { UpdateCheckInfo info = null; if (ApplicationDeployment.Is ...
- Atcoder&CodeForces杂题11.6
Preface NOIP前突然不知道做什么,感觉思维有点江僵化,就在vjudge上随便组了6道ABC D+CF Div2 C/D做,发现比赛质量还不错,知识点涉及广,难度有梯度,码量稍小,思维较多. ...
- 测试人员必须掌握的linu常用命令
有些公司需要测试人员部署程序包,通过工具xshell. 现在我将总结下工作需要用到的最多的命令 ls 显示文件或目录 pwd ...
- Pyhton模块和包
一 模块 1.1 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用pytho ...
- iOS - Scenekit3D引擎初探之 - 导入模型+上传服务器+下载并简单设置
SceneKit是ios8之后苹果推出了一个3D模型渲染框架. SceneKit现在可以支持有限的几种模型,截止到我写这篇文章为止似乎只有.dae和.abc后一种模型我没有使用过.这篇文章只针对.da ...
- Arc Engine二次开发——弹窗进行属性查询
在Arcmap中使用Sapefile格式的矢量数据时,经常会用到其属性查询的功能,弹出窗体然后用户鼠标点击或手动输入查询条件,进而查询到感兴趣的要素.在AE二次开发中也经常需要这个功能,于是在此记录整 ...
- Nuget & VS Plugin
VS Plugin vsCode:https://marketplace.visualstudio.com/vscode vs:https://marketplace.visualstudio.com ...
- linux-修改树莓派分辨率
直接在树莓派下编辑 使用命令行来编辑配置文件 sudo nano /boot/config.txt 并在config.txt文件的最后加上以下代码即可 max_usb_current=1 hdmi_g ...
- JVM系列二:垃圾回收
什么时候回收对象 引用计数法 1.原理:为对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数器减 1.引用计数为 0 的对象可被回收. 2.缺点:无法解决循环引用问题 可达性分析 ...