Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:计算((p^(eB+1)-1)/(p-1))%MODIn Reply To:计算((p^(eB+1)-1)/(p-1))%MOD Posted by:dirtysalt at 2009-09-04 15:32:53 > 1.可以首先计算rem=p^(eB+1)%(MOD*(p-1)) > 2.然后计算rem=(rem-1+MOD*(p-1))/(p-1) > 3.最后计算rem%MOD > 这样不需要二分。但是MOD*(p-1)可能会超过32位,所以在计算p^(eB+1)%(MOD*(p-1))时候可能乘法会溢出....careful.... 证明: 令t(p-1)=(p^0+p^1+p^2+...+p^a)*(p-1)=p^(a+1)-1 (mod m*(p-1)) 因为gcd(p-1,m*(p-1))=p-1且 (p-1)|p^(a+1)-1 ,所以t=(p^(a+1)-1)/(p-1) (mod m) 因此我们可以先求p^(a+1)-1 (mod m*(p-1)),再把这个值除以(p-1)后取mod m 注意:当p=1 (mod m)时,答案是a+1,不能用等比公式 还有一个不错的方法是一样用等比公式,但除法的部份利用对9901的逆元(因为9901是素数,所以保证gcd(p-1,9901)=1) Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator