心如止水
Je n'ai pas le temps
posts - 400,comments - 130,trackbacks - 0
快速幂取模就是在O(logn)内求出a^n mod b的值。算法的原理是ab mod c=(a mod c)(b mod c)mod c,因此很容易设计出一个基于二分的递归算法。
以下是我的代码,以下代码必须保证输入的是合法的表达式,比如不能出现0^0 mod b:
long exp_mod(long a,long n,long b)
{
    
long t;
    
if(n==0return 1%b;
    
if(n==1return a%b;
    t
=exp_mod(a,n/2,b);
    t
=t*t%b;
    
if((n&1)==1) t=t*a%b;
    
return t;
}


posted on 2010-04-04 19:18 lee1r 阅读(1327) 评论(2)  编辑 收藏 引用 所属分类: 算法与数据结构

FeedBack:
# re: 快速幂取模
2010-08-19 19:53 | xtl
if((t&1)==1) t=t*a%b;
应该是 if((n&1)==1) t=t*a%b; 吧!!!  回复  更多评论
  
# re: 快速幂取模
2010-08-22 19:34 | Lee1R
@xtl
谢谢提醒!  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理