当前位置: 首页 > news >正文

ABC 445 E(利用线性预处理最小质因子快速得到每个数的质因子分布 trick)

E - Many LCMs

在本题中,需要处理 \(n\le 2e5\)\(A_{i}\) 的所有不同质因子集合(不需要求个数),其中 \(A_{i}\le 10^{7}\)。显然每个 \(A_{i}\) 最多只有 \(8\) 种不同的质因子,但是直接按照质因数分解的方式来写是 \(O(n\sqrt A_{i})\) 的;若通过线性筛质数+调和级数预处理 \(1\backsim 10^{7}\) 每个数的质因子,复杂度为这些数的质因子种类数之和,\(< 8 \times 10^{7}\),理论上是可行的,但这样做的常数太大,也并不合适。

这里记录一种线性做法:首先在线性筛质数的过程中,可以得到 \(1 \backsim 10^{7}\) 每个数的最小质因子。因为线性筛质数就是利用了 “每个数只能被其最小质因子筛一次” 这个原理保证了线性复杂度。那么在筛的时候,就可以顺带着记录每个数是被哪个质因子筛掉的,该质因子就是这个数的最小质因子。

bool st[10000005];
int primes[10000005], tot;
int minp[10000005]; // minp[x]:x 含有的最小质因子
void sieve(int n){for(int i = 2; i <= n; i ++){if(!st[i]) primes[++tot] = i, minp[i] = i;for(int j = 1; j <= tot && primes[j] <= n / i; j ++){st[i * primes[j]] = true; // i * primes[j] 被最小质因子 primes[j] 筛掉minp[i * primes[j]] = primes[j];if(i % primes[j] == 0) break;}}
}

得到了 \(minp[1\backsim 10^{7}]\) 后,对于每个 \(A_{i}\),我们可以得到 \(A_{i}\) 的最小质因子 \(x = minp[A_{i}]\);通过将 \(A_{i}\) 不断除以 \(x\),我们会消除掉所有的质因子 \(x\)。此时 \(A_{i}\) 变为了 \(A_{i}'\),接下来我们又可以通过 \(x = minp[A_{i}']\) 得到 \(A_{i}'\) 的最小质因子,然后再进行类似操作,最终就可以以 \(O(\log A_{i})\) (因为 \(A_{i}\) 的质因子的个数就是 \(O(\log{A_{i}})\) 级别)的复杂度得到 \(A_{i}\) 的所有质因子以及每种质因子的数量,总复杂度 \(O(A + n\log A)\)(因为还有一个关于值域线性筛的过程,可见这种方法适用于 \(A_{i} \le 10^{7}\) 的情况,但不适用于 \(10^{9}\)),是非常小的。

for(int i = 1; i <= n; i ++){int x = a[i];while(x > 1){int p = minp[x];int cnt = 0;while(x % p == 0){cnt ++;x /= p;}// 记录信息 (p, cnt)}
}

code

http://www.jsqmd.com/news/444555/

相关文章:

  • Git Pre-commit 钩子
  • Java全栈开发面试实战:从基础到高阶的深度探讨
  • 免费在线浏览查看3DTiles,支持修改坐标,微调整保存坐标json,支持cesium地图,高德地图,ArcGIS,天地图等自定义地图
  • Le sens de vivre dans un monde misrable
  • Reversing-x64Elf-100
  • 玩转opencraw
  • 6500亿美元AI资本开支:科技巨头逆势布局的底层逻辑与行业博弈
  • 深度解析:AI原生应用中的人机协作架构设计
  • 湖北2026省选试机题目 - 填充
  • 容器发展史
  • Godot游戏练习01-第4节-多人控制与玩家位置同步(翻车)
  • OpenClaw 钉钉插件安装指南 - 指南
  • Meta计划开发自定义芯片训练AI模型
  • Thread线程状态
  • 苹果音乐推出AI歌曲和视觉内容可选标识标签
  • Vibe Coding的致命隐患:你必须知道的技术债务和扩展性危机
  • 中草药检测数据集(10000 张图片已划分、已标注)| AI训练适用于目标检测任务
  • 浊流
  • ElasticSearch 常见高频面试题
  • 听歌会员的告别!R3PLAY 极简播放器 + cpolar,外网也能听遍全网歌
  • happiness and sadness
  • 炸裂新招!响应式提示系统设计模式革新提示工程架构师工作流程
  • easyRE1
  • 周赛 Round 51
  • 2024最新:AI原生应用中知识抽取的10大最佳实践
  • 具身智能构建统一跨模态表示空间的优秀的方法
  • 完整教程:【Mybatis】动态SQL与留言板小项目
  • ClickHouse与ArangoDB对比:多模型数据库选择
  • 蓝桥15/B/5/拔河
  • 寻找Confluence替代软件?2026年五大专业工具全面对比评测 - 资讯焦点