快速幂:
b
and
1,b&1
//
也就是取b的二进制最低位(即第0位),判断b是否为奇数,是则为1
b
shr
1,b>>1
//就是右移去掉b的二进制最低位(即第0位)
#include<stdio.h>
#include<iostream>
using namespace std;
typedef long long ll;
#define MOD 10007
ll quickpow(int a, int b)
{
int ans = 1;
a=a%MOD;
while (b)
{
if (b&1) //b为奇数,即b%2
ans = ans * a % MOD;
b >>= 1;
a = a*a % MOD; //(a^2)%MOD
}
return ans;
}