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. ...
随机推荐
- 审美赛_(java)实现
问题描述 <审美的历程>课上有n位学生,帅老师展示了m幅画,其中有些是梵高的作品,另外的都出自五岁小朋友之手.老师请同学们分辨哪些画的作者是梵高,但是老师自己并没有答案,因为这些画看上去都 ...
- PHP连接 redis
<?php //连接本地的 Redis 服务 $redis = new Redis(); //连接redis 地址 端口 连接超时时间 连接成功返回true 失败返回false $redis-& ...
- 最全 MySQL 优化方法,从此优化不再难
说起MySQL的查询优化,相信大家收藏了一堆奇技淫巧:不能使用SELECT *.不使用NULL字段.合理创建索引.为字段选择合适的数据类型..... 你是否真的理解这些优化技巧?是否理解其背后的工作原 ...
- PAT甲级——1095 Cars on Campus (排序、映射、字符串操作、题意理解)
本文同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/93135047 1095 Cars on Campus (30 分 ...
- NetworkUtils
import java.io.IOException; import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Lo ...
- bootstrap multiselect的使用 多选下拉菜单
官网网址: http://davidstutz.de/bootstrap-multiselect/
- FTP服务器windows配置
1.配置IIS Web的FTP站点 1.1 打开iis管理器(方法很多,这里我们用命令) Win+r中输入:inetmgr 1.2 新建FTP站点 1.2.1 新建FTP服务器根目录文件夹 1.2.2 ...
- TCP/IP三次握手与四次挥手的正确姿势
0.史上最容易理解的:TCP三次握手,四次挥手 https://cloud.tencent.com/developer/news/257281 A 理解TCP/IP三次握手与四次挥手的正确姿势http ...
- asp.net mvc网站的发布与IIS配置
一.安装IIS (如果服务器上已经安装了就跳过) 控制面板——程序——程序功能——打开或关闭windows功能——勾选Inertnet信息服务下面所有选项——确定 二.获取发布文件(如果已经发不好就跳 ...
- CentOS6.x之emacs安装配置编译
刚开始学习linux,干学没什么意思,想在linux下写写程序,了解到linux下使用较多的是emacs和vim,在youtobe上分别看了看这两个工具进行开发的视频,个人感觉emacs比较酷一点,所 ...