2019HDU多校Minimal Power of Prime——分段讨论&&思维
题目
将 $n$($1 < n \leq 10^{18}$)质因数分解,求质因数幂的最小值。
分析
直接质因数分解,不太行。
可以这样想,对小区间质因数分解,n变小了,再枚举答案。
打印1-10000之间的素数表然后质因数分解,分解完剩下的那个数,
- 两种质数(肯定大于 $10^4$)相乘,最多二次,合起来也是一个平方数;
- 三种或以上质数相乘,只可能为一次,不用考虑。
- 一种质数,最多为四次方,枚举四、三、二次方,如果都不是,就是单个质数
要注意:先看是4次方再看2次方(因为如果满足4次方一定满足2次方,但是满足4次方也满足2次方,2次方的话就不是质因数了),3次方无所谓,因为开3次方会损失精度,所以就二分一下。
#include<bits/stdc++.h>
using namespace std; typedef long long ll;
ll n; //返回n以内素数的个数
//埃氏筛法O(nloglogn)
const int maxn = + ;
int prime[maxn]; //prime[i]表示第i个素数
bool is_prime[maxn + ]; //is_prime[i]为true表示i是素数 int sieve(int n)
{
int cnt = ;
for (int i = ; i <= n; i++) is_prime[i] = true;
is_prime[] = is_prime[] = false;
for (int i = ; i <= n; i++)
{
if (is_prime[i])
{
prime[cnt++] = i;
for (int j = i * i; j <= n; j += i) is_prime[j] = false; //i * i可能爆int
}
}
return cnt;
} bool is_three(ll n) //是否能开立方
{
ll l = , r = 1e6;
while(l <= r)
{
ll mid = (l+r) >> ;
ll tmp = mid*mid*mid;
if(tmp == n) return true;
else if(tmp > n) r = mid-;
else l = mid+;
}
return false;
} int main()
{
int cnt = sieve(); //筛出10000内的质数
int T;
scanf("%d", &T);
while(T--)
{
scanf("%lld", &n);
int ans = ;
for(int i = ;i < cnt;i++)
{
if(n % prime[i] == )
{
int tmp = ;
while(n % prime[i] == )
{
n /= prime[i];
tmp++;
}
ans = min(tmp, ans);
}
if(n == ) break;
}
if(ans == ){ printf("1\n"); continue;}
if(n == ){ printf("%d\n", ans); continue;} ll t1 = (ll)sqrt(n);
ll t2 = (ll)sqrt(t1);
if(t2*t2*t2*t2 == n) ans = min(ans, );
else if(t1*t1 == n) ans = min(ans, );
else if(is_three(n)) ans = min(ans , );
else ans = min(ans, );
printf("%d\n", ans);
}
return ;
}
参考链接:https://blog.csdn.net/lgz0921/article/details/97948432
2019HDU多校Minimal Power of Prime——分段讨论&&思维的更多相关文章
- 2019hdu多校 Minimal Power of Prime
题目链接:Click here 题目大意:求一个数分解质因数后的最小幂指数 Solution: 首先,我们肯定是不能直接暴力求解的 我们先考虑筛出1e4范围以内的所有质数,把x所有这个范围内的质因子筛 ...
- 2019杭电多校第四场hdu6623 Minimal Power of Prime
Minimal Power of Prime 题目传送门 解题思路 先打\(N^\frac{1}{5}\)内的素数表,对于每一个n,先分解\(N^\frac{1}{5}\)范围内的素数,分解完后n变为 ...
- [2019杭电多校第四场][hdu6623]Minimal Power of Prime
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6623 题目大意为求一个数的唯一分解的最小幂次.即120=23*31*51则答案为1. 因为数字太大不能 ...
- HDU 6623 Minimal Power of Prime
Time limit 1000 ms Memory limit 65536 kB OS Windows 中文题意 给一个数n,设将n质因数分解后可以得到 \[n=\prod_{i=1}^{\omega ...
- HDU 6623"Minimal Power of Prime"(数学)
传送门 •题意 给你一个大于 1 的正整数 n: 它可以分解成不同的质因子的幂的乘积的形式,问这些质因子的幂中,最小的幂是多少. •题解 定义 $ans$ 表示最终答案: ①如果 $ans \ge 5 ...
- HDU 6623 Minimal Power of Prime(数学)
传送门 •题意 给你一个大于 1 的正整数 n: 它可以分解成不同的质因子的幂的乘积的形式,问这些质因子的幂中,最小的幂是多少. •题解 把[1,10000]内的素数筛出来,然后对于每个素$P$数遍历 ...
- HDU 6623 Minimal Power of Prime(思维)题解
题意: 已知任意大于\(1\)的整数\(a = p_1^{q_1}p_2^{q_2} \cdots p_k^{q_k}\),现给出\(a \in [2,1e18]\),求\(min\{q_i\},q ...
- 2019 Multi-University Training Contest 4 - 1010 - Minimal Power of Prime
http://acm.hdu.edu.cn/showproblem.php?pid=6623 题意,给50000个1e18级别的数N,求它质因数分解里面的最小的指数(不算0) 比赛的时候给划了一个1e ...
- 【HDOJ6623】Minimal Power of Prime(Powerful Number)
题意:给定大整数n,求其质因数分解的最小质数幂 n<=1e18 思路:常规分解算法肯定不行 考虑答案大于1的情况只有3种:质数的完全平方,质数的完全立方,以及p^2*q^3,p,q>=1三 ...
随机推荐
- java Files 和 Path对文件操作
1.拷贝文件 /** * 拷贝文件,生成新的文件名 * @param pathUpload * @return */ private String converUploadFileName(Strin ...
- [转帖]Chrome中默认非安全端口
Chrome,你这坑人的默认非安全端口 https://www.cnblogs.com/soyxiaobi/p/9507798.html 之前遇到过 这个总结的比之前那篇要好呢. 今天用chrome打 ...
- 第6章:LeetCode--数组(冒泡排序、快速排序)
11. Container With Most Water class Solution { public: int maxArea(vector<int>& height) { ...
- 【动态规划】洛谷2019 OI春令营 - 普及组 作业
[P1464 Function] [题解] 按照题目意思进行递归即可,但是过程中需要用到记忆化搜索. #include<bits/stdc++.h> using namespace std ...
- easyui实现树形菜单Tab功能、layout布局
一:常见三种前端ui框架 在初学者入门的状态下,我们常见的前端框架有三种且都有自己的官方网站: 1.easyui:官方网站(http://www.jeasyui.net/) 基于jquery的用户页面 ...
- django中使用redis保存session(转)
原文:https://blog.csdn.net/Enjolras_fuu/article/details/79661582 Django-redis-session官网:https://pypi.o ...
- C#对象转换工具类
using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using Sy ...
- java jdk1.8 API
里面有 中英文 jdk 1.8 API 还有 jdk1.6 和1.7 英文 API 链接:https://pan.baidu.com/s/1tchABVX7htJCaO3quENP1g提取码:y ...
- js监听audio播放完毕
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- vue 钩子函数的初接触
vue-router的路由钩子函数: 第一种:全局钩子函数. router.beforeEach((to, from, next) => { console.log('beforeEach') ...