利用二进制来写,提供一种新思路,也更加简洁,迅速

//res=ab%c
//将b转化为二进制,1即为有这一个数,0即没有
//例如9的二进制1001 即 2
3+20
//则a
9=a8*a1; a23和a20 的乘积
//求a的b次方对c取模

//(ab)%c==(a%c)(a%b)

int fun(int a,int b,int c)
{
    int res,t;
    res=1; //res记录最后的模,初始化为1 
    t=a%c;//t代表a^n,初始化为a%c; 
    while(b)//当b不为0时 
	{
        if(b&1)//如果b的二进制的最后一位是1,代表a^t存在 
		{
            res=res*t%c;//更新最后的模 
        }
        t=t*t%c;//t=a^n*a^n,向前走一位,例如a^8=a^4*a^4 
        b>>=1;//b的二进制向右移动一位,去掉最后一位 
    }
    return res;
}