快速幂 N很大的时候

前几天网络赛的一个题,找了下规律发现是要输出 2 n − 1 2^{n-1} 2n1 1 1 1 ≤ \leq n n n ≤ \leq 1 0 200 10^{200} 10200,答案对1000000007取模,直接快速幂肯定超时。
百度了下,于是学到了费马小定理: 假如p是质数,且gcd(a,p)=1,那么 a p − 1 a^{p-1} ap1 ≡ \equiv 1(mod p)
证明见百度百科
于是 a n a^{n} an % 1000000007 ≡ \equiv a r a^{r} ar % 1000000007 1000000007 1000000007,其中 r r r = = = n n n % 1000000006 1000000006 1000000006
只需要在输入的时候用字符串存一个大数,遍历一次进行取模,就可以在int范围内跑快速幂了

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值