快速幂-hdu1097

题目描述:

题目大意:给出两个数,求出a^b的最后一个数字。

代码实现:

#include<stdio.h>
using namespace std;
int pow(int a,int b,int c)//求快速幂的经典代码
{
    int ans=1,base=a;//base表示进制的基数(如二进制为2,十进制为10)
    while(b!=0)
    {
        if(b&1==1)//如果b的二进制表示的最后一位为1
            ans=ans*base%c;//%c是为了最终得到个位数字
        base=base*base%c;//不论if语句是否执行,此行代码都得执行。
        b>>=1;//b的二进制表示往右移一位,即扩大一倍
    }
    return ans;
}
int main()
{
    int a,b;
    while(~scanf("%d%d",&a,&b))
    {
        printf("%d\n",pow(a%10,b,10));
    }
    return 0;
}

如果看不懂我的,可以参考:https://blog.csdn.net/cs09_Satan/article/details/7406689

 

posted @ 2018-11-20 22:01  里昂静  阅读(129)  评论(0编辑  收藏  举报