题目:http://poj.org/problem?id=3421

好久没有独立A题了...做点水题还是有助于提升自信心的;

这题就是把 x 质因数分解,质因数指数的和 sum 就是最长的长度,因为每次至少乘一个质因数;

排列方式就是从 sum 个位置里给第一种质因数选几个位置,再在剩下的里面给第二种质因数选几个位置...

也就是 ans = ∏(1<=i<=cnt) C(n,pc[i]),n -= pc[i],其中 cnt 是质因数(种类)个数,pc 是每种质因数的指数,n 就是目前剩下几个位置。

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long ll;
int x,p[],pc[],cnt;
void divide(int n)
{
cnt=;
memset(pc,,sizeof pc);
for(int i=;i*i<=n;i++)
if(n%i==)
{
p[++cnt]=i;
while(n%i==)pc[cnt]++,n/=i;
}
if(n>)p[++cnt]=n,pc[cnt]=;
}
ll C(int n,int m)
{
if(n<m)return ;
m=min(m,n-m);
ll a=,b=;
for(int i=n-m+;i<=n;i++)a*=i;
for(int i=;i<=m;i++)b*=i;
return a/b;
}
int main()
{
while(~scanf("%d",&x))
{
divide(x);
int sum=; ll ans=;
for(int i=;i<=cnt;i++)sum+=pc[i];
int n=sum;
for(int i=;i<=cnt;i++)
{
ans*=C(n,pc[i]);
n-=pc[i];
}
printf("%d %lld\n",sum,ans);
}
return ;
}

最新文章

  1. Handler,Thread,Looper之间关系小结
  2. 简单实现div遮罩
  3. 用dbforge调试procedure
  4. Raft论文的一些问题
  5. web工程常见部署方式总结
  6. js调用函数时传入的参数个数与函数定义时的参数个数不符时的操作
  7. Mybatis 之级联查询 一对多配置
  8. Mac下安装Fiddler
  9. nim调用GetSystemPowerStatus判断笔记本电脑是否接通外接电源
  10. TS和C#的差异
  11. java 除法运算只保留整数位的3种方式
  12. 【jquery+easyUI】-- $.messager.show 弹框显示
  13. 简单CNN 测试例
  14. 数组slice方法
  15. Linux mount命令详解
  16. win10 U盘安装ubuntu16.04双系统
  17. c#使用emit方法DB,实体相互转换
  18. 【Python初级】由判定回文数想到的,关于深浅复制,以及字符串反转的问题
  19. certbot以standalone方式新建密钥
  20. 002 Lock和synchronized的区别和使用

热门文章

  1. Leetcode724:寻找数组的中心索引(java、python3)
  2. The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [C:\Program Files\Java\jdk1.8.0_60\bin;C:\Windows\Sun\Jav
  3. Listview异步加载图片之优化篇
  4. C语言输入一行整数(OJ输入格式)
  5. Ubuntu安装Foxit PDF阅读器
  6. Python学习笔记之map、zip和filter函数
  7. 将登录代码模块化,然后用add address接口来调用它,success!
  8. Divide Groups 二分图的判定
  9. codechef 营养题 第一弹
  10. [bzoj1820][JSOI2010][Express Service 快递服务] (动态规划)