Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:计算((p^(eB+1)-1)/(p-1))%MOD

Posted by sleepingpig at 2009-09-07 11:04:37 on Problem 1845 and last updated at 2009-09-07 11:31:55
In 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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator