题目链接:

最小的指数

乍一看还以为是Pollard_rho算法,其实大可不必。

发现\(1<= n <= 1e18\),我们可以将n分为两部分(分块思想降低时间复杂度)。

剔除小于等于\(4000\)的所有质因子,剩余的设为x,设此时得到的答案为\(minnum\)

如果x为\(1\),那我们得到答案,可以直接返回

否则知道x的质因子一定大于\(4000\),可以分类讨论

若x可写成\(x=p^{(1/4)}\),\(minnum = min(minnum,4)\),返回

若x可写成\(x=p^{(1/3)}\),\(minnum = min(minnum,3)\),返回

否则x若可写成平方的形式,\(minnum = min(minnum,2)\),注意要区分为4的情况

否则我们知道\(minnum\)一定为\(1\)

时间复杂度大约为\(O(t) * 1000\)

(将大问题化为小问题然后分类讨论)

代码:

#include <bits/stdc++.h>
#define LL long long
using namespace std;
const int N = 10001;
int prime[N], flag[N], tot, t;
LL n;
LL mulfou(LL x) { return x*x*x*x; }
LL multhe(LL x) { return x*x*x; } void get_prime(int n)
{
for(int i = 2;i <= n; i++)
{
if(!flag[i]) prime[++ tot] = i;
for(int j = 1;j <= tot && i * prime[j] <= n; j++)
{
flag[i * prime[j]] = 1;
if(i % prime[j] == 0) break;
}
}
} void work(LL n)
{
if(n == 1) { printf("0\n");return; }
int minnum = 100; LL x = n;
for(int i = 1;i <= tot; i++)
{
if(x % (LL) prime[i] != 0) continue;
int res = 0;
while(x % prime[i] == 0) ++ res,x /= prime[i];
minnum = min(minnum,res);
}
if(x == 1) {printf("%d\n",minnum);return;}
if(minnum == 1) {printf("1\n");return;}
LL sqr = pow(x,1.0/4.0), sqr2 = pow(x,1.0/2.0);
if(mulfou(sqr) == x || mulfou(sqr + 1) == x || mulfou(sqr - 1) == x)
{ minnum = min(minnum,4);printf("%d\n",minnum); return; }
else if(sqr2 * sqr2 == x) { minnum = min(minnum,2);printf("%d\n",minnum);return; }
else
{
LL sqr3 = (LL)pow(1.0*x,1.0/3.0);
if(multhe(sqr3) == x || multhe(sqr3 + 1) == x || multhe(sqr3 - 1) == x)
{ minnum = min(3,minnum);printf("%d\n",minnum); return; }
else { printf("1\n"); return; }
} } int main()
{
get_prime(4000);
scanf("%d",&t);
while(t --)
{
scanf("%lld",&n);
work(n);
}
}
/*
1
512384096008
*/

牛客挑战赛46 B的更多相关文章

  1. 牛客挑战赛46 D

    题目链接: 数列 查询有多少\([l,r]\)区间满足每个数出现\(k\)的倍数次 即为\(1\)到\(r\)与\(1\)到\(l-1\)每个数相减的次数为\(k\)的倍数次 可以使用哈希维护 记录每 ...

  2. 牛客挑战赛46 C

    题目链接: 排列 考虑\(dp\),我们思考如何设计状态 将第i个数插入i-1个数中,我们考虑会新增多少个超级逆序对 假设将\(i\)插入后\(i\)的位置为\(l\),\(i-1\)的原来的位置为\ ...

  3. 牛客练习赛46 C 华华跟奕奕玩游戏 (期望,概率)(详解)

    链接:https://ac.nowcoder.com/acm/contest/894/C 来源:牛客网 华华跟奕奕玩游戏 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K ...

  4. 牛客练习赛46 B 华华送奕奕小礼物 (预处理前缀和,二分)

    链接:https://ac.nowcoder.com/acm/contest/894/B?&headNav=acm 来源:牛客网 华华送奕奕小礼物 时间限制:C/C++ 1秒,其他语言2秒 空 ...

  5. 牛客练习赛46 A 华华教奕奕写几何 (简单数学)

    链接:https://ac.nowcoder.com/acm/contest/894/A 来源:牛客网 华华教奕奕写几何 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K ...

  6. 牛客挑战赛 39 牛牛与序列 隔板法 容斥 dp

    LINK:牛牛与序列 (牛客div1的E题怎么这么水... 还没D难. 定义一个序列合法 当且仅当存在一个位置i满足 $a_i>a_,a_j<a_$且对于所有的位置i,$1 \leq a_ ...

  7. 牛客挑战赛 30 A 小G数数

    题目链接:https://ac.nowcoder.com/acm/contest/375/A 分析:我写的时候竟然把它当成了DP....... 还建了个结构体DP数组,保存一二位,不知道当时脑子在抽啥 ...

  8. 良心送分题(牛客挑战赛35E+虚树+最短路)

    目录 题目链接 题意 思路 代码 题目链接 传送门 题意 给你一棵树,然后把这棵树复制\(k\)次,然后再添加\(m\)条边,然后给你起点和终点,问你起点到终点的最短路. 思路 由于将树复制\(k\) ...

  9. Luogu5611 Ynoi2013 D2T2/牛客挑战赛32F 最大子段和 分块、分治

    传送门 之前一直咕着的,因为一些特殊的原因把这道题更掉算了-- 有一个对值域莫队+线段树的做法,复杂度\(O(n\sqrt{n} \log n)\)然而牛客机子实在太慢了没有希望(Luogu上精细实现 ...

随机推荐

  1. tp5 上传图片(自定义图片路径)

    控制器调用 /** * [goods_addimg 图片上传] * @return [type] [description] */ public function addimg(){ if (requ ...

  2. bWAPP----HTML Injection - Stored (Blog)

    HTML Injection - Stored (Blog) 界面 1 <div id="main"> 2 3 <h1>HTML Injection - S ...

  3. 打开WPS时出现MathType错误弹窗怎么办

    MathType是一款特别优秀的公式编辑器,特别是在文档中出现大量的复杂数学公式需要编辑时.不过MathType与Office的兼容性还算好,与WPS的兼容性要略逊一筹,有时候会出现如下的报错弹窗.提 ...

  4. guitar pro系列教程(五):Guitar Pro音轨属性之小节的功能

    又到了guitar pro系列教程新的一章,本章节小编将采用图文相结合的方式与大家一起来讨论下关于Guitar Pro小节的功能,感兴趣的小伙伴都可以进来看看哦,如下图所示: 我们看到小节这选项栏中分 ...

  5. 如何清理MacBook电脑缓存?

    使用Mac电脑的用户都知道,Mac其空间硬盘大多数都是只有128G以及256G的规格,而用惯了win系统基本都是超过512G的硬盘的用户,转手来使用Mac电脑,就不得不接受这一硬伤问题. 用户往往再怎 ...

  6. Luogu P43916 图的遍历

    我们把"u点能够到达的最大点"转化为反向图中能到达u点的所有点里的最大值,可知缩点后满足无后效性.val[i]的初值设为连通分量i中的最大点.反向存图,tarjan缩点,拓扑序dp ...

  7. 由OptionalLong想到的拆装箱问题

    包装类型为null的时候时候拆箱会报空指针

  8. Appium上下文和H5测试(二)

    坚持原创输出,点击蓝字关注我吧 作者:清菡 博客:oschina.云+社区.知乎等各大平台都有. 文章总览图 一.往期回顾 loc='new UiSelector().text("全程班&q ...

  9. java44

    1.使用封装工具类思想:三种输入模式下的工具类. dateUtils类, StringUtils类(判断字符串值是否为空), 调用工具类: String res = dateUtils.datetoS ...

  10. python应用(7):输入与输出

    如前文,流程是程序的主角,而流程一般都需要处理数据,那数据如何进到流程,而最终处理后的数据又如何表现,这就是流程的输入与输出的问题. 本文介绍流程处理的数据的输入与输出. 流程中的输入,一般都会先保存 ...