Zhao70's Blog

HDU1097

题目大意

给定a, b求 a ^ b的个位数字.
(0<a,b<=2^30)

思路

这道题肯定是使用快速幂取模解题。
但是如果直接quickMod(a, b, c)肯定会爆掉,因为a最大值2 ^ 30在进入函数平方后, 会超出int数据类型, 所以应该quickMod(a % c, b, c)

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
int quickMod(int a, int b, int c)
{
int ans = 1;
while(b)
{
if(b % 2)
ans = (ans * a) % c;
a = (a * a) % c;
b /= 2;
}
return ans;
}
int main()
{
int a, b;
while(~scanf("%d%d", &a, &b))
{
printf("%d\n", quickMod(a % 10, b, 10));
}
return 0;
}

题目链接

HDU1097