POJ 3421 X-factor Chains(构造)
这条链依次乘一个因子。因为n<2^20,sqrt(n)分解因子,相同的因子相对顺序取一个。
组合公式计算一下就好。
- #include<cstdio>
- #include<iostream>
- #include<string>
- #include<cstring>
- #include<queue>
- #include<vector>
- #include<stack>
- #include<vector>
- #include<map>
- #include<set>
- #include<algorithm>
- #include<cmath>
- //#include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- #define PB push_back
- const int maxn = <<;
- ll fac[];
- void calFac(int n = )
- {
- fac[] = ;
- for(int i = ; i <= n; i++){
- fac[i] = fac[i-]*i;
- }
- }
- int primeDecompose(int n,ll &div)
- {
- int re = ; div = ;
- for (int i = ; i*i <= n; i++){
- int cnt = ;
- while (n % i == ){
- n /= i;
- cnt++;
- re++;
- }
- if(cnt) div *= fac[cnt];
- }
- if(n>) re++;
- return re;
- }
- //#define LOCAL
- int main()
- {
- #ifdef LOCAL
- freopen("in.txt","r",stdin);
- #endif
- calFac();
- int X;
- while(~scanf("%d",&X)){
- ll div;
- int len = primeDecompose(X,div);
- ll shc = fac[len]/div;
- printf("%d %I64d\n",len,shc);
- }
- return ;
- }
我尝试用预先筛sqrt(n)以内的素数来加速判断,结果却慢了26ms..
- #include<cstdio>
- #include<iostream>
- #include<string>
- #include<cstring>
- #include<queue>
- #include<vector>
- #include<stack>
- #include<vector>
- #include<map>
- #include<set>
- #include<algorithm>
- #include<cmath>
- //#include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- #define PB push_back
- const int maxn = <<;
- const int sqrn = <<;//(int)sqrt(maxn+0.5); + 5
- const int PrmSz = (<<)+; // (sqrn>>2) + 5
- bool isNot[sqrn];
- int Prm[PrmSz], tot;
- void seive(int n = sqrn) //sqrt(sqrt(maxn))
- {
- int m = sqrt(n+0.5);
- isNot[] = isNot[] = true;
- for(int i = ; i <= m; i++){
- if(!isNot[i])
- for(int j = i*i; j <= n; j += i){
- isNot[j] = true;
- }
- }
- for(int i = ; i <= n; i++){
- if(!isNot[i]) //Prm.PB(i);
- Prm[tot++] = i;
- }
- }
- ll fac[];
- void calFac(int n = )
- {
- fac[] = ;
- for(int i = ; i <= n; i++){
- fac[i] = fac[i-]*i;
- }
- }
- inline int primeDecompose(int n,ll &div)
- {
- int re = ; div = ;
- for (int i = ; i < tot && Prm[i] <= n; i++){
- int p = Prm[i], cnt = ;
- while (n % p == ){
- n /= p;
- cnt++;
- re++;
- }
- if(cnt) div *= fac[cnt];
- }
- if(n>) re++;
- return re;
- }
- //#define LOCAL
- int main()
- {
- #ifdef LOCAL
- freopen("in.txt","r",stdin);
- #endif
- seive();
- calFac();
- int X;
- while(~scanf("%d",&X)){
- ll div;
- int len = primeDecompose(X,div);
- ll shc = fac[len]/div;
- printf("%d %I64d\n",len,shc);
- }
- return ;
- }
POJ 3421 X-factor Chains(构造)的更多相关文章
- poj 3421 X-factor Chains——质因数分解
题目:http://poj.org/problem?id=3421 记忆化搜索竟然水过去了.仔细一想时间可能有点不对,但还是水过去了. #include<iostream> #includ ...
- POJ 3421 X-factor Chains
线型素数筛+质因素分解+组合数. AC后发现这样做效率有点低..766ms. #include<stdio.h> #include<string.h> #include< ...
- Mathematics:X-factor Chains(POJ 3421)
X链条 题目大意,从1到N,1 = X0, X1, X2, …, Xm = X中间可以分成很多数,另Xi < Xi+1 Xi 可以整除Xi+1 ,求最大长度m和m长度的链有多少条 思路: 很简单 ...
- POJ 3421 X-factor Chains (因式分解+排列组合)
题意:一条整数链,要求相邻两数前一个整除后一个.给出链尾的数,求链的最大长度以及满足最大长度的不同链的数量. 类型:因式分解+排列组合 算法:因式分解的素因子个数即为链长,链中后一个数等于前一个数乘以 ...
- POJ 3421 X-factor Chains | 数论
题意: 给一个x,求最长的排列满足开头是1,结尾是x,前一个数是后一个数的因子 输出长度和这样序列的个数 题解: 把x分解质因数,质因数个数就是答案,接下来考虑怎么求个数 显然这是一个可重集合全排列问 ...
- POJ 3421分解质因数
X-factor Chains Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7375 Accepted: 2340 D ...
- POJ 3421
X-factor Chains Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5111 Accepted: 1622 D ...
- POJ 1776 Task Sequences(竞赛图构造哈密顿通路)
链接:http://poj.org/problem?id=1776 本文链接:http://www.cnblogs.com/Ash-ly/p/5458635.html 题意: 有一个机器要完成一个作业 ...
- POJ 3233 Matrix Power Series(构造矩阵求等比)
Description Given a n × n matrix A and a positive integer k, find the sum S = A + A2 + A3 + … + Ak. ...
随机推荐
- AIM Tech Round 5 (rated, Div. 1 + Div. 2) D(SET,思维)
#include<bits/stdc++.h>using namespace std;const long long mod = 1e9+7;char s[370007][27];long ...
- 2018CCPC网络赛A(优先队列,思维)
#include<bits/stdc++.h>using namespace std;priority_queue<pair<int,int>>q;int main ...
- CodeForces 114B 【STL应用】
思路: 原来string类能sort 和 swap....太强了.... 注意:字典序最小输出,因为某个地方写挫了,sort了n发,代码挫. #include <bits/stdc++.h> ...
- [Django笔记] Apache + mod-wsgi 环境部署所遇到的各种问题总结
在一台CentOS7机器上配置Django+apache运行环境 Django安装 python2 or python3 ? 一般情况下Linux系统都有自带python2,本机CentOS7上的是p ...
- 799C(xjb)
题目链接: http://codeforces.com/problemset/problem/799/C 题意: 有c, d两种货币, 有 n 个货物, 可以用 c 货币或者 d 货币购买, 现在需要 ...
- python web开发之flask框架学习(1) 创建flask项目
python 开发越来越火,作为菜鸟,也应该学习一下,感觉还可以,记录下来,方便学习参考. 不管做什么开发首先肯定是安装环境,这里我用的是pycharm,python3.如果不清楚怎么安装环境可以去网 ...
- List、Set
List.Set List.Set List.Set List.Set List.Set List.Set List.Set
- 理解js继承的6种方式
想要继承,就必须要提供个父类(继承谁,提供继承的属性) 一.原型链继承 重点:让新实例的原型等于父类的实例. 特点:1.实例可继承的属性有:实例的构造函数的属性,父类构造函数属性,父类原型的属性.(新 ...
- git 脚本
echo $PWD message=$1 content='.' if [ ! -n "$1" ] ;then message=`date` message=$message' 推 ...
- (反NIM)
题目大意是和普通的NIM游戏一样,但是却是取到最后一个是输的,天真的以为就是反过来,其实并不是这样的 结论 先手必胜的条件为 ①:所有堆的石子数均=1,且有偶数堆. ②:至少有一个堆的石子数>1 ...