1 条题解
-
0
自动搬运
来自洛谷,原作者为

Quidrem
抱歉,是在下无敌了搬运于
2025-08-24 22:39:09,当前版本为作者最后更新于2022-07-26 21:49:26,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
题意
每组数据给出一个 (
long long范围内),重复将 整除一个可以表示为 的数( 为质数且 ),直到无法再找到这样的数。求出最多能整除多少个这样的数。思路
为了使整除的个数多,就需要使 尽量小(这样每次 除去的数 就会保证最小,可供整除操作的次数最大)。
因为符合条件的最小 ,所以我们只需要枚举质数 ,并判断 是不是 的因数,若是则循环把 除去这个数直到 不再是这个数的倍数即可。
当我们将 因数中包含的一个质数(不妨设其为 )的三次方除尽后, 一定不再会是 的倍数(其中 为大于 的正整数),所以我们只要从 开始枚举 ,每次 加 就行了,这样就免去了筛素数的步骤。
注:本题思路较为简单,就不列出公式来表达意义了,以免混淆各位的思维。
代码
#include<bits/stdc++.h> #define ll long long using namespace std; ll t,n,ans; int main(){ scanf("%lld",&t); while(t--){ scanf("%lld",&n); ans=0; for(ll i=2;i*i*i<=n;i++){ while(n%(i*i*i)==0)n/=i*i*i,ans++; } printf("%lld\n",ans); } return 0; }
- 1
信息
- ID
- 7769
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者