在2021初赛第 11 题中,考了这么一个递归函数
inline int solve(int t, n) {
if (t == 1)
return 1;
else
return 5 * solve(t - 1, n) % n;
}
按照题给代码模拟,solve(23,23) 应该得到这样的结果
5×(5×(5×.....5×(5×solve(1,23)%23)%23)%23.....)%23
共 n−1 即 22 个 5 相乘,最终结果可以表示为
522mod23
请问这里的括号是怎么化简掉的,为什么可以化简成这样的形式,怎么保证取余的正确性?