写这道题首先srO qw。。。。题目就不贴了。。。大意:求 (G^(Σd|n C(n, d))) mod M。
首先发现模是一个质数,所以根据费马小定理可知指数只需模模减一即可。
然后又发现模减一太大,而且不是质数。。。然后发现质因子分解后都是比较小的数字。。果断中国剩余定理合并啊。。。
然后记得lyp讲过什么n的正约数个数均摊是O(logn)级的。。。果断暴枚约数啊。。。
然后是组合数取模。。。n太大,实在想不出什么好办法直接处理阶乘,好像可以用勒让德定理,但是觉得太麻烦了。。。于是用zfone讲的lucas定理做吧。。。
然后组合数就线性预处理阶乘的模和逆元,每次直接用好了。。。
然后时间就被虐爆了。。。不知道好多版去了。。。
代码写了一百多行。。。各种繁琐。。。脑残错误有一开始搞错了模。。。
#include
#include
#include
#include
#include
#include
#include
#include