CF615D 题解
CF615D题解
题意
以给定质因子的形式给定一个数 $n$,并给出具体的质因子,求:
$$\prod_{d\mid n}d$$
Solution
我们唯一分解 $n$,使得 $n=\prod p_i^{\alpha_i}$,我们考虑对于每一个素数 $p_i$,它在质因子中可能以 $p_i^k(0\le k\le \alpha_i)$ 的形式出现,即一共 $\frac{\alpha_i\times(\alpha_i+1)}{2}$ 次。并且对于每个幂 $k$,都会在别的质因子取任何值的时候出现,即对于一个 $p_i^k$,它会出现 $\frac{\prod_j(\alpha_j+1)}{\alpha_i+1}$ 次,因此它的贡献就是
$$p_i^{\frac{\prod_j(\alpha_j+1)}{\alpha_i+1}\times\frac{\alpha_i\times(\alpha_i+1)}{2}}=p_i^{\frac{\alpha_i\prod(\alpha_i+1)}{2}}$$
这个东西就计算 $\prod(\alpha_i+1)$,然后每次乘 $\alpha_i$ 放在 $p_i$ 的指数上。
记 $s=\prod(\alpha_i+1)$,于是现在的答案就是
$$\prod p_i^{\frac{s\times \alpha_i}{2}}$$
但是 $s\times \alpha_i$ 可能会非常大,而且它在指数上,因此我们用拓展欧拉公式对指数进行降幂。
因为 $\alpha_i$ 与 $\alpha_i+1$ 都在乘积中,因此除以二一定为整数。但对于模数的情况下,我们并不能保证是整数,因此我们还需要进行判断。
对于 $\alpha_i+1$ 有偶数的情况,再求乘积的时候就将某个 $\alpha_i+1$ 除以二,后面直接乘 $\alpha_i$ 就行。
对于 $\alpha_i+1$ 全部为奇数,即 $\alpha_i$ 全部为偶数,直接在最后计算的时候将 $\alpha_i$ 除以二再乘进去就可以了。
具体的看代码吧。
CODE
1 |
|