题意为 求n^n的末尾数
如果常规循环求末尾数会显示超时
可以有两种思路去求解
1 找规律 这种方法最简单 思路清晰但适用性不强 可能这道题可以用 下一道题就无规律可寻了
0~9 的数连续乘以自身 规律如下 {0}{1},{2,4,8,6},{3,9,7,1},{4,6},{5},{6},{7,9,3,1},{8,4,2,6},{9,1}
因此 最大循环周期为4 不妨先对N模4 再进行循环规律中的查找即可
2 递归+分治
递归可以简化过程 分治用来缩短时间 两者结合会很好用 定义函数 int past(N,N%10)
当N为奇数 则return N%10*past(N-1,N%10)
若N为偶数 则s=past(N/2,N%10) return s*s%10
当N的值为一时 返回 N%10 即可
此方法需要把0和1特殊化
这种思想适用性较好 可以普遍应用于幂乘运算