%mod, 时间复杂度O(logk)

long long fastpow(long long b,long long p,long long mod)
{
    long long res = 1;//存结果
    while(p > 0)
    {
        if(p & 1)//相当于 p % 2 == 1,若是奇数则抽一个出来
            res = b * res % mod;//抽一个幂出来就是乘一个底数
        p >>= 1;//等价于除等于2
        b = b * b % mod;
    }
    return res;
}