二分幂

 

int QuickPower(int N,int time)//计算N^time
{
    
    int ReturnValue=1;//记录返回值
    int Pow=1;//记录当前已经计算出的多少次幂
    int temp=N;//记录N^i次幂
    
    while(time){
        
        int Bin=time%(2*Pow);//Bin记录二进制位
        
        if(Bin) {time-=Bin; Bin=1;}//这里是将time化成二进制的灵活用法
        
        ReturnValue*=(temp*Bin!=0?temp*Bin:1);//仔细体会这一步
        
        temp*=temp;//你懂的

        Pow*=2;//你懂的
        
    }
    
    return ReturnValue;

发布了22 篇原创文章 · 获赞 21 · 访问量 2万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章