返回题解分享
讨论 / 题解分享/ 帖子详情

快速幂 - 题解

/*
思路:
    思路一:
       1 (a.b)%c = ((a%c)*(b%c))%c
       2 pow(3,10)=pow(pow(3,2),5)=pow(9*3,4)=pow(pow(27,2),2)


*/

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

ll function_Modexpfast ( ll a , ll b , ll c ) {
    a = a % c;
    ll result = 1; //记录a的b次方
    while ( b != 0 ) { //循环操作 b&1
        if ( b % 2 == 1 ) { // 每次对b除以2 奇数时则是result记录时。
            result = (result * a) % c; //奇数时 a的b次方= a*a * a的b-1次方 
        }
        a = (a * a) % c;
        b = b >> 1; //向右移动一位 就是除以2

    }
    cout << result << endl;
    return result;
}

int main()
{
    int n;
    cin >> n;
    for ( int i = 1; i <= n; i++ ) {
        ll a, b, c;
        cin >> a >> b >> c;
        function_Modexpfast(a , b , c);
    }
      

    return 0;
}
0 回复 0 转发 0 喜欢 5 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!