【HDOJ6623】Minimal Power of Prime(Powerful Number)
题意:给定大整数n,求其质因数分解的最小质数幂
n<=1e18
思路:常规分解算法肯定不行
考虑答案大于1的情况只有3种:质数的完全平方,质数的完全立方,以及p^2*q^3,p,q>=1三种形式
前两种可以暴力判
第三种必定有一个小于10^(18/5)的因子,大概是3800
迭代分解,用vector存一下具体的情况
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- typedef unsigned int uint;
- typedef unsigned long long ull;
- typedef pair<int,int> PII;
- typedef pair<ll,ll> Pll;
- typedef vector<int> VI;
- typedef vector<PII> VII;
- //typedef pair<ll,ll>P;
- #define N 1000010
- #define M 200010
- #define fi first
- #define se second
- #define MP make_pair
- #define pb push_back
- #define pi acos(-1)
- #define mem(a,b) memset(a,b,sizeof(a))
- #define rep(i,a,b) for(int i=(int)a;i<=(int)b;i++)
- #define per(i,a,b) for(int i=(int)a;i>=(int)b;i--)
- #define lowbit(x) x&(-x)
- #define Rand (rand()*(1<<16)+rand())
- #define id(x) ((x)<=B?(x):m-n/(x)+1)
- #define ls p<<1
- #define rs p<<1|1
- const int MOD=1e9+,inv2=(MOD+)/;
- double eps=1e-;
- int INF=1e9;
- int inf=0x7fffffff;
- int dx[]={-,,,};
- int dy[]={,,-,};
- ll p[],mn[];
- int read()
- {
- int v=,f=;
- char c=getchar();
- while(c<||<c) {if(c=='-') f=-; c=getchar();}
- while(<=c&&c<=) v=(v<<)+v+v+c-,c=getchar();
- return v*f;
- }
- ll check2(ll n)
- {
- ll t=sqrt(n);
- if(t*t==n) return t;
- return ;
- }
- ll check3(ll n)
- {
- ll t=pow(n,1.0/)+0.5;
- if(t*t*t==n) return t;
- return ;
- }
- VII solve(ll n)
- {
- if(n<)
- {
- VII re;
- for(int i=;i<=p[]&&p[i]*p[i]<=n;i++)
- if(n%p[i]==)
- {
- int s=;
- while(n%p[i]==)
- {
- s++;
- n/=p[i];
- }
- re.push_back(MP(p[i],s));
- }
- if(n>) re.push_back(MP(n,));
- return re;
- }
- int t;
- if(t=check2(n))
- {
- VII re=solve(t);
- for(int i=;i<re.size();i++) re[i].se*=;
- return re;
- }
- if(t=check3(n))
- {
- VII re=solve(t);
- for(int i=;i<re.size();i++) re[i].se*=;
- return re;
- }
- ll t1=,t2=;
- for(int i=;i<=p[]&&p[i]*p[i]*p[i]*p[i]*p[i]<=n;i++)
- if(n%p[i]==)
- {
- t1=p[i];
- while(n%p[i]==)
- {
- t2++;
- n/=p[i];
- }
- break;
- }
- if(t1==) return VII(,MP(,));
- VII re=solve(n);
- re.push_back(MP(t1,t2));
- return re;
- }
- int main()
- {
- //freopen("1.in","r",stdin);
- //freopen("1.out","w",stdout);
- rep(i,,)
- {
- if(!mn[i])
- {
- p[++p[]]=i;
- mn[i]=p[];
- }
- for(int j=;j<=mn[i]&&i*p[j]<=;j++) mn[i*p[j]]=j;
- }
- int cas=read();
- while(cas--)
- {
- ll n;
- scanf("%I64d",&n);
- VII t=solve(n);
- if(t.empty()) printf("1\n");
- else
- {
- int ans=;
- for(int i=;i<t.size();i++) ans=min(ans,t[i].se);
- printf("%d\n",ans);
- }
- }
- return ;
- }
【HDOJ6623】Minimal Power of Prime(Powerful Number)的更多相关文章
- HDU6623 Minimal Power of Prime (简单数论)
题面 T ≤ 50 000 T\leq50\,000 T≤50000 组数据: 输入一个数 N N N ( 2 ≤ N ≤ 1 0 18 2\leq N\leq 10^{18} 2≤N≤1018) ...
- 【SPOJ】Longest Common Substring II (后缀自动机)
[SPOJ]Longest Common Substring II (后缀自动机) 题面 Vjudge 题意:求若干个串的最长公共子串 题解 对于某一个串构建\(SAM\) 每个串依次进行匹配 同时记 ...
- 【BZOJ1717】产奶的模式(后缀数组)
[BZOJ1717]产奶的模式(后缀数组) 题面 权限题 hihocoder 洛谷 题解 \(hihocoder\)里面讲的非常好了 这题要求的就是最长可重叠重复K次子串 所谓相同的子串 我们可以理解 ...
- 【BZOJ2154】Crash的数字表格(莫比乌斯反演)
[BZOJ2154]Crash的数字表格(莫比乌斯反演) 题面 BZOJ 简化题意: 给定\(n,m\) 求\[\sum_{i=1}^n\sum_{j=1}^mlcm(i,j)\] 题解 以下的一切都 ...
- 【BZOJ2588】Count On a Tree(主席树)
[BZOJ2588]Count On a Tree(主席树) 题面 题目描述 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第 ...
- 【BZOJ3436】小K的农场(差分约束)
[BZOJ3436]小K的农场(差分约束) 题面 由于BZOJ巨慢无比,使用洛谷美滋滋 题解 傻逼差分约束题, 您要是不知道什么是差分约束 您就可以按下\(Ctrl+W\)了 #include< ...
- 【Luogu3732】[HAOI2017]供给侧改革(Trie树)
[Luogu3732][HAOI2017]供给侧改革(Trie树) 题面 洛谷 给定一个纯随机的\(01\)串,每次询问\([L,R]\)之间所有后缀两两之间的\(LCP\)的最大值. 题解 一个暴力 ...
- 【BZOJ5339】[TJOI2018]教科书般的亵渎(斯特林数)
[BZOJ5339][TJOI2018]教科书般的亵渎(斯特林数) 题面 BZOJ 洛谷 题解 显然交亵渎的次数是\(m+1\). 那么这题的本质就是让你求\(\sum_{i=1}^n i^{m+1} ...
- 【BZOJ1814】Ural 1519 Formula 1 (插头dp)
[BZOJ1814]Ural 1519 Formula 1 (插头dp) 题面 BZOJ Vjudge 题解 戳这里 上面那个链接里面写的非常好啦. 然后说几个点吧. 首先是关于为什么只需要考虑三进制 ...
随机推荐
- request.getParameter() 和request.getAttribute()
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/wrs120/article/details/79287607[相同点] 1.都是HttpServle ...
- TensorFlow学习笔记7-深度前馈网络(多层感知机)
深度前馈网络(前馈神经网络,多层感知机) 神经网络基本概念 前馈神经网络在模型输出和模型本身之间没有反馈连接;前馈神经网络包含反馈连接时,称为循环神经网络. 前馈神经网络用有向无环图表示. 设三个函数 ...
- NornJ-javascript模版引擎
NornJ-javascript模版引擎 NornJ是一个渲染效率高,语法可读性好,可扩展性超强,适用场景丰富的javascript模板引擎. 学习网址:https://www.npmjs.com/p ...
- mybatis初步理解
mybatis概念 mybatis 是一款轻量级的orm的数据持久框架,封装jdbc 对开发提供了便利,但是性能会比jdbc低,从开发的角度来说,现在是比较流行的 掌握上比较容易,也支持缓存,级联 ...
- "SQLServer复制需要有实际的服务器名称才能连接到服务器,请指定实际的服务器名"
最近在学习SQL SERVER的高级复制技术的时候,遇到一个小问题,就是用本地SQL SERVER连接服务器的数据库时,在查看复制功能的发布服务器时,连接不上,弹出一个错误提示框架,如下:原来在自己本 ...
- Log4Net使用详解(续)
转:http://blog.csdn.net/zhoufoxcn/article/details/6029021 说明自从上次在2008年在博客上发表过有关log4net的用法介绍文章之后(网址:ht ...
- Java 和操作系统交互,你猜会发生什么?
作者:lonelysnow https://www.jianshu.com/p/7f6832d61880 结合 CPU 理解一行 Java 代码是怎么执行的 根据冯·诺依曼思想,计算机采用二进制作为数 ...
- mongoDB关系型数据库的对比
一.基本操作 1.mongoDB和关系型数据库对比 对比项 mongoDB mysql oracle 表 集合list 二维表 表的一行数据 文档document 一条记录 表字段 键key 字段fi ...
- win7 开启 telnet 服务
如何重新开启win7的telnet服务 “控制面板”-->“系统和安全”-->“允许远程访问”-->“远程桌面”-->“选择用户”,添加可telnet的用户. “控制面板”-- ...
- PHP Web Server 实例
通过WebService,我们可以调用部署在其它地方的程序,而不用关心被调用的程序是在什么平台用什么语言编写的.这里我们使用php调用. 在php4时代调用WebService大部分使用的nusoap ...