快速幂 N很大的时候

前几天网络赛的一个题,找了下规律发现是要输出2n12^{n-1}11 \leq nn \leq 1020010^{200},答案对1000000007取模,直接快速幂取模要用大数,很麻烦。
百度了下,于是学到了费马小定理: 假如p是质数,且gcd(a,p)=1,那么 ap1a^{p-1} \equiv 1(mod p)
证明见百度百科
于是ana^{n} % 1000000007 \equiv ara^{r} % 10000000071000000007,其中 rr == nn % 10000000061000000006
只需要在输入的时候用字符串存一个大数,遍历一次进行取模,就可以在int范围内跑快速幂了

posted @ 2018-09-17 21:49  Apale  阅读(225)  评论(0编辑  收藏  举报