N的N次方的个位数、暴力打表、快速幂取模

本文探讨了N的N次方的个位数规律,通过暴力打表展示了每20次方形成一个循环,并提供了直接存储循环数组的解决方案。此外,还解释了如何通过取模运算简化计算,并引入了快速幂取模算法,将时间复杂度降低到O(logN),从而高效地求解此类问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

N的N次方 取个位数是什么

暴力打表就是用比较小的范围看看有什么规律 比如这道题 算出50以内
        for(int i=1;i<50;i++) {
            int sum =1;
            for(int j=1;j<=i;j++) {
                sum*=i;
                if(sum>10)
                    sum%=10;
            }
            System.out.print(sum);
        }

结果:1476563690163656749014765636901636567490147656369

可发现每20就循环

所以可以直接弄一个数组存起来就好了

       while(n-->0) {
   &nb

### Python 中实现矩阵快速幂 为了高效地计算大型矩阵的高次幂,可以采用矩阵快速幂算法。该方法利用二分的思想,在对数时间内完成指数运算,并结合操作防止数值溢出。 #### 矩阵快速幂原理 矩阵快速幂的核心在于将普通的线性时间复杂度优化到对数级别的时间复杂度 O(log n),这使得处理大规数据成为可能。具体来说,当需要计算 \( A^n \mod m \) 时: - 如果 n 是偶数,则先计算 \( (A^{n/2})^2 \mod m \) - 如果 n 是奇数,则分解成 \( ((A^{(n-1)/2})^2 * A) \mod m \) 这种方法不仅提高了效率,还减少了中间结果可能出现的大数问题。 #### 使用 NumPy 库简化矩阵运算 NumPy 提供了高效的数组和矩阵操作接口,能够显著提升性能。下面是一个完整的 Python 函数定义,实现了上述逻辑[^3]。 ```python import numpy as np def matrix_power_mod(matrix, power, mod): """ 计算给定矩阵matrix的power次方mod的结果 参数: matrix: 输入的基础方阵 power : 幂次 mod : 基数 返回值: 结果矩阵 """ result = np.eye(len(matrix), dtype=int) % mod # 初始化单位矩阵作为初始结果 base_matrix = matrix.copy() # 复制输入矩阵以防修改原对象 while power > 0: if power & 1: # 当前位为1则相乘 result = (result @ base_matrix) % mod base_matrix = (base_matrix @ base_matrix) % mod # 更新底数 power >>= 1 # 移除最低有效位 return result ``` 此函数接受三个参数:待求幂的 `matrix`、所需的 `power` 和最终要使用的 `mod` 值。通过循环迭代的方式逐步构建最终的结果矩阵。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值