poj3421 X-factor Chains(重复元素的全排列)
题意:给定正整数$x(x<=2^{20})$,求$x$的因子组成的满足任意前一项都能整除后一项的序列的最大长度,以及满足最大长度的子序列的个数。
显然最大长度就是$x$的质因数个数(一个一个加上去鸭)
而满足最大长度的子序列个数....
这不就是可重复元素的全排列吗!
有这么一个公式,设元素总个数$n$,每个重复元素的个数$m_{i}$,共$k$种不同元素
则全排列个数$=\frac{n!}{\prod_{i=1}^{k}m_{i}!}$
发现$n!(n<=20)$在$longlong$范围内,可以直接处理
素数筛一筛就ok了。
#include<iostream>
#include<cstdio>
#include<cstring>
#define re register
using namespace std;
#define N 1048577
int n,v[N],pri[N],cct,cnt;
long long fac[],ans,tmp;
int main(){
for(int i=;i<N;++i){
if(!v[i]) v[i]=pri[++cct]=i;
for(int j=;j<=cct;++j){
if(pri[j]>i||pri[j]*i>=N) break;
v[pri[j]*i]=pri[j];
}
}fac[]=;
for(int i=;i<=;++i) fac[i]=fac[i-]*i;
while(cin>>n){
cnt=;tmp=;
for(int i=,j=n;i<=cct&&j>&&pri[i]<=n;++i){
int a=;
while(j%pri[i]==&&j>) ++a,++cnt,j/=pri[i];
tmp*=fac[a];
}ans=fac[cnt]/tmp;
cout<<cnt<<" "<<ans<<endl;
}return ;
}
poj3421 X-factor Chains(重复元素的全排列)的更多相关文章
- 【模板】 全排列 && 有重复元素的全排列
全排列 #include<bits/stdc++.h> using namespace std; ]; void print (int n){ ;i<=n;i++) cout< ...
- Concise and clear CodeForces - 991F(dfs 有重复元素的全排列)
就是有重复元素的全排列 #include <bits/stdc++.h> #define mem(a, b) memset(a, b, sizeof(a)) using namespace ...
- 紫书 习题 10-25 UVa 1575 (有重复元素的全排列+暴搜)
我一开始以为有什么很牛逼的方法来做,然后一直没有思路 后来看了https://blog.csdn.net/zju2016/article/details/78562932的博客 竟然是暴搜?????? ...
- 剑指 Offer 38. 字符串的排列 + 无重复元素的全排列
剑指 Offer 38. 字符串的排列 Offer_38 题目描述 解题思路 可以使用递归实现全排列,每次都确定一个数的位置,当所有位置的数都确定后即表示一个排列. 但是考虑到本题需要排除重复的排列, ...
- 刷题——有重复元素的全排列(Permutations II)
题目如上所示. 我的解决方法(参考了九章的答案!): class Solution { public: /* * @param : A list of integers * @return: A li ...
- dfs 全排列 使用交换——含重复元素和非重复元素
15. 全排列 中文 English 给定一个数字列表,返回其所有可能的排列. 样例 样例 1: 输入:[1] 输出: [ [1] ] 样例 2: 输入:[1,2,3] 输出: [ [1,2,3], ...
- [leetcode]47. Permutations全排列(给定序列有重复元素)
Given a collection of numbers that might contain duplicates, return all possible unique permutations ...
- LeetCode47, 全排列进阶,如果有重复元素怎么办?
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode第28篇,依然是全排列的问题. 如果对全排列不熟悉或者是最近关注的同学可以看一下上一篇文章: LeetCode46 回 ...
- Js删除数组重复元素的多种方法
js对数组元素去重有很多种处理的方法,本篇文章中为网络资源整理,当然每个方法我都去实现了:写下来的目的是希望自己活学活用,下次遇到问题后方便解决. 第一种 function oSort(arr){ v ...
随机推荐
- jq的clone用第二次的时候为什么会复制clone出来的元素(即一变二,二变四)
原因是clone得到的是一个数组吗,每次再clone的时候,相当于操作了这个数组,肯定就会出现重复,我们只需要取第一个值就可以了,用.first()的方法 jquery(‘item‘).first() ...
- JS-cookie封装
智能社学习笔记 <script type="text/javascript"> /*****设置cookie*****/ function setCookie(name ...
- .net Asp AdRotator(广告控件)
1.新建项目名称AdRotator 2.右键项目名称添加一个xml文件命名为AdRotator.xml <?xml version="1.0" encoding=" ...
- 从一个多项目Web工程看Eclipse如何导入Gradle项目
这里再次说一下为什么我们需要熟悉Gradle构建工具,主要原因就是很多开源项目现在都在改用Gradle作为构建工具.一部分的github上的示例代码也在用Gradle构建,如果还是只能用maven,那 ...
- 树链剖分+线段树+离线(广州网选赛第八题hdu5029)
http://acm.hdu.edu.cn/showproblem.php?pid=5029 Relief grain Time Limit: 10000/5000 MS (Java/Others) ...
- nginx 重定向
不带www跳转www 1.301: return 301 http://www.xx.com$request_uri; 2.(1)rewrite ^(.*)$ http://www.xx.com$1 ...
- 170524、java.lang.IllegalArgumentException: No converter found for return value of type异常解决
错误原因及解决步骤 1.原因:这是因为springmvc默认是没有对象转换成json的转换器的,需要手动添加jackson依赖. 2.解决步骤: 手动添加jackson依赖到pom.xml文件中 &l ...
- .net配置404错误页面
如果你的网站出现一堆让人看不懂的报错,那么你就不是一个合格的程序员,也不是一个合格的站长. 下面的方面可以帮助你的网站远离让人头大的页面. 第一步:配置web.config 打开web.config, ...
- numpy中的convolve的理解
https://blog.csdn.net/u011599639/article/details/76254442 函数 numpy.convolve(a, v, mode=‘full’),这是num ...
- jquery 获取对象
jquery 获取对象 1.引用this作为对象时,必须以$(this)的形式变为对象目标,否则,无法识别,会报错“ has no method”