C++快速求幂a^b

    xiaoxiao2021-03-25  213

    原理: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; }
    转载请注明原文地址: https://ju.6miu.com/read-11101.html

    最新回复(0)