C++快速求冪a^b

原理:a^b=a^(Binary(b))
例如: 2^3=2^(11)=2^(10+01)=(2^10)*(2^01); 而二進制中每後一位的權重都是前一位的2倍,故(2^10)=(2^01)*(2^01)。

#include<bits/stdc++.h>

using namespace std;

long long arr[100];

int main(){
    long long num;
    long long val,temp1,temp2;
    while(scanf("%lld%lld",&num,&val)!=EOF&&num!=0){
        temp1=1;
        while(val!=0){
            if(val%2==1) temp1*=num;
            val/=2;
            num*=num;
            num%=1000;
            temp1%=1000;
        }
        printf("%lld\n",temp1); 
    }

    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章