快速幂-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