poj1845 sumdiv 题解

poj1845 sumdiv 题解

Emmm...并非题解

其实是边想边写现编的

先审题:

考虑两个自然数 A 和 B。令 S 为 A\^B 的所有自然因子之和。确定 S 除以 9901 的余数.

eg. \(2^3 = 8\)。 8 的自然因子是:1、2、4、8。它们的和是 15。 15 除以 9901 的余数是 15(输出值)。

啊,好简洁的题面像我的大脑一样!

可以肯定的,\(A\)的因子一定是\(A^B\)的因子依旧废话

而且我们会发现,\(A^B\)的质因子一定与A的质因子完全相同。

很简单吧 谁问你了


思路

这时候,可以想到:(敲黑板,这是重点/)

A 进行 唯一分解

\\\large A = \\prod _{i=1}\^{k}{(P_i\^{e_i})} \\

还是拆开好看:

\\\large A= P_1\^{e_1} \\times P_2\^{e_2} \\times ... \\times P_k\^{e_k} \\

------其中\(P_i\) 表示A的质因子,\(e_i\)表示该质因子的次数。

那\(A^B\)就是给每个\(e_i\)乘上一个B就好了。

应该没人不知道这个吧

很显然地,A的 因子 就是一个x,使得:

\\\large x= P_1\^{v_1} \\times P_2\^{v_2} \\times ... \\times P_k\^{v_k} \\

其中\(v_i < e_i\).

Emmm...还是不好求嘞...


求解

题目要求我们求所有x的和,

每个\(P_i\)会被算:

\\\tag {1} 1+P_i\^1 + P_i\^2 + P_i\^3 + ... + P_i\^{e_i} \\

引入一个另外的一次质因子\(P_j\), 与上面组合,答案就是:

\\\tag {2} 1 \\times P_j + P_i\^1 \\times P_j + P_i\^2 \\times P_j + ... \\

可以发现,\((2)=(1)\times P_j\).

那么多次的\(P_j\)就是:

\(1) + (1) \\times P_j\^1 + (1) \\times P_j\^2 +...(1) \\times P_j\^{e_j} \\

嘿,您猜怎么着, 咱把这 (1) 一提:

\(1) \\times (1+P_j\^1+P_j\^2+P_j\^3+...+P_j\^{e_j}) \\

诶呦喂,瞧瞧,我是不是在哪遇见过您?awa

这就是变了个样的 (1) 啊!

噫嘘兮,情乎喜哉!数论之易,易于切水题。

很好,我们只要求每个\(P_i\)所对应的(i),对其求积就可以了。

应该吧QAQ


拓展

没想到吧,这篇题解还有拓展awa

上面我们已经求出了这个解释,我还有什么要说的呢?

注意:

\(I) = 1+P_i\^1 + P_i\^2 + P_i\^3 + ... + P_i\^{e_i} \\

有没有发现什么端倪?

oi,这不是个等比数列吗

知道我要说啥了吧awa

\\\tag{1} (I) = 1+P_i\^1 + P_i\^2 + P_i\^3 + ... + P_i\^{e_i} \\

\\\tag{2} P_i \\times (I) = P_i\^1 + P_i\^2 + P_i\^3 + ... + P_i\^{e_i}+P_i\^{e_i+1} \\

(2)-(1),得

\(P_i\^{e_i}-1) \\times (I) = 1 + P_i\^{e_i+1} \\

那么有

\(I)=\\frac{P_i\^{e_i+1}+1}{P_i\^{e_i}-1} \\

...太丑了吧

虽然丑,但它好求啊,这不比一个一个枚举快多了qwq

其实看有好多大佬还用了 乘法逆元 二次化简,我这个蒟蒻没学过就不在这里做洋相了

好不容易打了一下午的题解,浅浅要个赞不过分吧qwq

代码部分

.

.

.

.

.

.

.

.

.

自己写awa

特别鸣谢

教练

劳什子

完结撒花✿ヽ(^ ▽^)ノ✿✿

相关推荐
Tisfy3 天前
LeetCode 2095.删除链表的中间节点:两次遍历 / 一次遍历(快慢指针)
算法·leetcode·链表·题解·双指针
Tisfy4 天前
LeetCode 2130.链表最大孪生和:转数组 / 快慢指针+链表翻转(O(1))
算法·leetcode·链表·题解
Tisfy5 天前
LeetCode 3838.带权单词映射:求和、取模、拼接(附python一行版)
python·算法·leetcode·字符串·题解·模拟·取模
Tisfy9 天前
LeetCode 3689.最大子数组总值 I:What The Medium
算法·leetcode·题解·贪心·模拟·脑筋急转弯
cpp_250110 天前
P2947 [USACO09MAR] Look Up S
数据结构·c++·算法·题解·单调栈·洛谷
cpp_250115 天前
P11375 [GESP202412 六级] 树上游走
数据结构·c++·算法·题解·洛谷·树形结构·gesp六级
cpp_250115 天前
P10722 [GESP202406 六级] 二叉树
数据结构·c++·算法·题解·洛谷·树形结构·gesp六级
cpp_250117 天前
P10109 [GESP202312 六级] 工作沟通
数据结构·c++·算法·题解·洛谷·gesp六级
cpp_250117 天前
P10377 [GESP202403 六级] 好斗的牛
数据结构·c++·算法·题解·洛谷·gesp六级
朔北之忘 Clancy18 天前
2026 年 3 月青少年软编等考 C 语言二级真题解析
c语言·开发语言·c++·学习·青少年编程·题解·考级