快速幂

来源:互联网 发布:读单词软件 编辑:程序博客网 时间:2024/06/05 14:31

知识点题目:hdu 1005

int quick_pow(int a, int n){    int re = 1;    while (n)    {        if (n & 1) re *= a;     //相当于n对2取余        a *= a;        n >>= 1;           //相当于n除以2    }    return n;}

位运算很有趣,对于n&1,是因为,n换算成二进制时,最后一位如果是1就是偶数,是0就是奇数,所以这个式子相当于对2取余。至于n>>=1,则是因为n换算成二进制后,右移一位会发现,真的是除以2。

0 0