防止数据溢出,快速幂取模!!!!

#include<stdio.h>
int main()
{
    int a,b;



    while(scanf("%d%d",&a,&b)==2)
    {//求的是最后三位的数
        if(a==0&&b==0)
            return 0;
            int ans=1;
        a=a%1000;
    while(b>0)
    {
        if(b%2==1)
            ans=(ans*a)%1000;//b是奇数,就把第一个数存起来
        b=b/2;
        a=(a*a)%1000;//两个数取余后,记下来!b的次数会相应的减半
    }
    printf("%d\n",ans);
    }
    return 0;
}//公式是A^BmodC=(AmodC)^BmodC

 (A*A....A)(共B个)^C=(AmodC)*(AmodC)……(共B个)modC


 

### 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` 值。通过循环迭代的方式逐步构建最终的结果矩阵。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值