题意理解
一个正整数N的N次幂的个位数是多少
问题分析
分治+递归
求一个数的个位数的方法是取这个数对10的余数。
(N*N) % 10 = [(N % 10) * (N % 10)] % 10
算法为
将N次幂分成两半,每半独立计算,计算完再合并。
终止条件:当幂为1时,各位数为N % 10
递归式:S = modX(N,N/2);当N能被2整除时,结果为(S*S)%10;当N不能被2整除时,结果为(S*S*a)%10。
其他
代码链接
https://github.com/xierensong/learngit/blob/master/hdu/h1061.cpp