int pow(int a, int b)
{
int r = 1, base = a;
while (b)
{
if (b & 1)
r *= base;
base *= base;
b >>= 1;
}
return r;
}
参考链接:https://baike.baidu.com/item/快速幂/5500243?fr=aladdin
hduoj_1240
#include <stdio.h>
int pow(long long a, long long b, long long c)
{
long long base = a;
long long r = 1;
while (b)
{
if (b & 1)
r = (r*base) % c;
base = (base*base) % c;
b >>= 1;
}
return (int)r;
}
int main()
{
int n;
long long a, b, c;
scanf("%d", &n);
while (n--)
{
scanf("%I64d %I64d %I64d", &a, &b, &c);
printf("%d\n", pow(a, b, c));
}
return 0;
}