光速幂

这个。。。。。。
这个算法好强啊。
给定P,给出T个q,对这T个询问求出Pq(modM)P^q \pmod MPq(modM) , T&lt;=5∗107,q&lt;=1010T&lt;=5*10^7,q&lt;=10^{10}T<=5107,q<=1010
首先你得要一个freadfreadfread的读入优化。
然后发现快速幂会T。
别急,这里有个自诩光速幂的算法:
S=qmax=105S = \sqrt {q_{max}} = 10^5S=qmax=105
然后预处理Pk,k∈[1,S]P^k,k \in [1,S]Pk,k[1,S]
Pk,k=iS,i∈NP^k,k = iS , i \in NPk,k=iS,iN
然后对于q=kS+lq = kS + lq=kS+l
就可以直接分成两个数相乘了。O(1)O(1)O(1)
然后你会发现PqP^qPq是有循环节的,然后,没有了。

Luogu P5110 块速递推

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值