快速幂
 时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
 
 空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
找到了心仪的小姐姐月月后,华华很高兴的和她聊着天。然而月月的作业很多,不能继续陪华华聊天了。华华为了尽快和月月继续聊天,就提出帮她做一部分作业。
月月的其中一项作业是:给定正整数A、B、P,求 的值。华华觉得这实在是毫无意义,所以决定写一个程序来做。但是华华并不会写程序,所以这个任务就交给你了。
的值。华华觉得这实在是毫无意义,所以决定写一个程序来做。但是华华并不会写程序,所以这个任务就交给你了。
因为月月的作业很多,所以有T组询问。
 月月的其中一项作业是:给定正整数A、B、P,求
因为月月的作业很多,所以有T组询问。
输入描述:
第一行一个正整数T表示测试数据组数。
接下来T行,每行三个正整数A、B、P,含义如上文。
输出描述:
输出T行,每行一个非负整数表示答案。
备注:
,
1、可以__int128避免爆ll
2、改用龟速乘,也可以避免爆ll,py的话……但我没说。
C++
#include<bits/stdc++.h>
using namespace std;
#define ll long long
__int128 qpow(__int128 a, __int128 n, __int128 mod) {
    __int128 ret = 1;
    while (n) {
        if (n & 1)
            ret = ret * a % mod;
        a = a * a % mod;
        n >>= 1;
    }
    return ret;
}
int main() {
    int T;
    scanf("%d", &T);
    while (T--) {
        ll a, b, p;
        scanf("%lld%lld%lld", &a, &b, &p);
        printf("%lld\n", (ll)qpow((__int128)a, (__int128)b, (__int128)p));
    }
    return 0;
} Python
T = int(input())
for _ in range(T):
    a,b,c = map(int,input().split())
    print(pow(a,b,c)) #py的help可以康康pow的函数自带快速幂 
 京公网安备 11010502036488号
京公网安备 11010502036488号