poj3421 X-factor Chains——分解质因数
2024-08-31 00:56:54
题目: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 ;
}
最新文章
- Handler,Thread,Looper之间关系小结
- 简单实现div遮罩
- 用dbforge调试procedure
- Raft论文的一些问题
- web工程常见部署方式总结
- js调用函数时传入的参数个数与函数定义时的参数个数不符时的操作
- Mybatis 之级联查询 一对多配置
- Mac下安装Fiddler
- nim调用GetSystemPowerStatus判断笔记本电脑是否接通外接电源
- TS和C#的差异
- java 除法运算只保留整数位的3种方式
- 【jquery+easyUI】-- $.messager.show 弹框显示
- 简单CNN 测试例
- 数组slice方法
- Linux mount命令详解
- win10 U盘安装ubuntu16.04双系统
- c#使用emit方法DB,实体相互转换
- 【Python初级】由判定回文数想到的,关于深浅复制,以及字符串反转的问题
- certbot以standalone方式新建密钥
- 002 Lock和synchronized的区别和使用
热门文章
- Leetcode724:寻找数组的中心索引(java、python3)
- 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
- Listview异步加载图片之优化篇
- C语言输入一行整数(OJ输入格式)
- Ubuntu安装Foxit PDF阅读器
- Python学习笔记之map、zip和filter函数
- 将登录代码模块化,然后用add address接口来调用它,success!
- Divide Groups 二分图的判定
- codechef 营养题 第一弹
- [bzoj1820][JSOI2010][Express Service 快递服务] (动态规划)