个人模板 快速幂取模,矩阵快速幂,快速乘

矩阵快速幂求Fibonacci数列 我们用二维数组来存储矩阵,设两个矩阵 int A[m][n],int B[n][p],再建立一个答案矩阵 int C[m][p]。 可通过如下代码实现两个矩阵的乘法运算 for(int i = 0;i < m;i++) for (int k = 0;k < n;k++) for (int j = 0;j < p;j++) C[i][j] += A[i][k] * B[k][j]; A[m][n] * B[n][p] = C[m][p] 我 阅读详情
#include<bits/stdc++.h>
using namespace std;
const int MOD = 1007;
int xx(int a,int n,int MOD) //计算a的n次方对MOD取模
{
    int ret=1;
    int tmp=a%MOD;
    while(n)
    {
        if(n&1)
            ret=ret*tmp%MOD;
        tmp=tmp*tmp%MOD;
        n>>=1;
    }
    return ret;
}
int main()
{
    int m,n;
    while(scanf("%d%d",&m,&n)==2)
    {
        printf("%d\n",xx(m,n,MOD));
    }
}
#include <bits/stdc++.h>
using namespace std;
const int N = 4 ;
int n;
struct xx
{
    int a[N][N];
} ori,res;
xx mul(xx x,xx y)
{
    xx temp;
    memset(temp.a,0,sizeof(temp.a));
    for(int i=0; i<N; i++)
    {
        for(int j=0; j<N; j++)
        {
            for(int k=0; k<N; k++)
            {
                temp.a[i][j]+=x.a[i][k]*y.a[k][j];
            }
        }
    }
    return temp;
}
void init()
{
    int x;
    for(int i=0; i<N; i++)
    {
        for(int j=0; j<N; j++)
        {
            scanf("%d",&x);
            ori.a[i][j]=x;
        }
    }
    for(int i=0; i<N; i++)
    {
        for(int j=0; j<N; j++)
        {
            res.a[i][j]=i==j?1:0;
        }
    }
}
xx calc(long long k)                                          
{
    while(k)
    {
        if(k%2==1)                      ///这么写比普通的快速幂好,亲身体会,HDU 5667用普通写法 TLE,这么写就过了
        {
            res=mul(ori,res);         
            k-=1;
        }
        else
        {
            ori=mul(ori,ori);
            k/=2;
        }
    }
    return res.a[0][0];
}
int main()
{
    while(cin>>n)
    {
        init();
        calc(n);
    }
}
long long mul(long long a,long long b)  
{  
    long long res=0;  
    while(b)  
    {  
        if(b&1) res=(a+res)%Mod;  
        b>>=1;  
        a=(a+a)%Mod;  
    }  
    return res;  
}  



矩阵快速幂(A^k模板) 题目传送门 给定n*n的矩阵A,求A^k 输入格式 第一行,n,k 第2至n+1行,每行n个数,第i+1行第j个数表示矩阵第i行第j列的元素 输出格式 输出A^k 共n行,每行n个数,第i行第j个数表示矩阵第i行第j列的元素,每个元素模10^9+7 输入 2 1 1 1 1 1 输出 1 1 1 1 矩阵相乘原理: 递推式, 例: 矩阵可以这样记:f(n-1)的下一项为f(n);f(n-2... 阅读详情

相关推荐

用Python+OpenCV给斗地主做个‘外挂’:手把手教你写个桌面记牌器(附源码)

本文详细介绍了如何使用Python和OpenCV开发一个智能斗地主记牌器,包括环境搭建、图像采集与预处理、扑克牌识别技术及PyQt5界面设计。通过实战案例,帮助开发者掌握图像处理与界面开发的结合应用,提升游戏辅助工具的编写能力。

weixin_29079643的博客 546

C++快速幂,矩阵快速幂(模板)

目标:矩阵快速幂 掌握 需要技能:矩阵乘法,c语言基础 要求能力:和我一样弱都能学会。 矩阵乘法大概就是:左行*右列(左边的矩阵第一行×右边第一列然后求和 就是 乘法的第一行第一个元素) 左边是行 右边是列 横是行 竖着是列 2行2列 *2行2列 =2行2列 红框看为第一行和第一列 代表 答案的 第一行第一个元素 绿框看为第一行和第二列 代表 答案的 第一行第二个元素 蓝框看为第二行和第一列 代表 答案的 第二行第一个元素 紫框看为第二行和第二列 代表 答案的 第二...

辅导大学生代码设计15年 776

QML 地图修改插件源码(三),Map在Plugin中设置加载地图类型

常用的地图种类分为交通图,地形图,卫星图等等,在QML的Map(以OSM地图为例)中提供activeMapType属性用于读取当前显示的地图类型(注意:该属性为只读属性,不能用于赋值),QML中地图的加载寻找根据瓦片的文件名进行查找,例如名为"osm_100-l-5-2-2-3.png"的瓦片,其中5代表了该地图的类型

zjgo007的专栏 3164

洛谷 P3390 【模板】矩阵快速幂

矩阵快速幂

我要吃熊猫 405

产品经理必备知识——API接口

在古代,我们的传输信息的方式有很多,比如写信、飞鸽传书,以及在战争中使用的烽烟,才有了著名的烽火戏诸侯,但这些方式传输信息的效率终究还是无法满足高速发展的社会需要。如果你选择允许,app就会根据你的当前位置为你提供更加个性化的一些服务,当然也有一些app拿到你的位置信息做出损害用户利益的行为,所以还是需要谨慎授权。首先,看接口文档的场景一般是自身业务模块需要获取外部的数据,但又不想自己重新开发,寻找外部已经实现的有开放能力的供应商(包含企业内部的)。通过发送请求和响应消息的方式实现程序间的通信。

WBKJ_Noah_的博客 3455

WebRTC音频传输实战:从采集到播放的完整链路解析(附RTP包处理细节)

本文深入解析了WebRTC音频传输的完整链路,从麦克风采集、音频处理与编码,到RTP打包、网络发送,再到接收端的NetEQ抗抖动处理与最终播放。文章以Linux PulseAudio为例,详细剖析了线程模型、缓冲区管理及RTP包处理等关键细节,旨在帮助开发者优化实时音频应用的延迟、卡顿与回声问题。

tea88的博客 852

hdu-4990-矩阵快速幂 or 等比数列+快速幂+除法取模

这个题有两种解法,一个是等比数列加快速幂,二是矩阵快速幂。 矩阵快速幂很好做,代码这里不写了:题目已知奇数项a[n]=a[n-1]*2+1,偶数项a[n]=a[n-1]*2。分别拆分可得奇数:a[n]=a[n-1]+2*a[n-2]+1,偶数项:a[n]=a[n-1]+2*a[n-2]+1。发现都是同一个式子,所以直接矩阵快速幂就可以了 等比数列就是列出前几项观察可得a[n]=2^(n-1)+...

alusang的博客 532

华为OD机试真题 新系统2026-04-01 Python&JS 实现【空间占用计算】

员工A的磁盘空间经常被耗尽,他需要找到占用空间最大的目录或文件,然后决定如何清理文件释放空间。给定某一目录,请编写程序帮助他统计该目录内一级子目录和文件的占用空间,并返回目标目录一级子项(文件或子目录)中占用空间最大的项。

MISAYAONE的博客 1301

快速幂和矩阵快速幂(取模)算法

对于普通类型的求a^n,我们的求法是不是a*a*a*a....,这样乘以n次,时间复杂度为O(n),对于普通n比较小的我们可以接受,然而当n比较大的时候,计算就慢了,所以我们就去寻找更快捷的计算方法! 例如:我们要求2^8,我们通过当为偶数的时候,a^n=(a*a)^(n/2),当n为奇数时,a^n=a*(a*a)^(n/2)的形式,是不是可以转化为4^4-&gt;8^2-&gt;64^1,就可...

Geek 1万+

Microsoft AI SDK 与 SAP ABAP:让企业级 AI 能力触手可及的深度整合指南

借助 Microsoft AI SDK,ABAP 开发者无需跳出熟悉的事务码与数据字典,就能把 GPT‑4 的强大语言理解与生成能力深度植入采购、销售、财务等核心业务流程。只要掌握“初始化 SDK → 构造 Prompt → 解析输出”这一范式,未来无论 Azure OpenAI、OpenAI 还是本地化 LLM,都能在同一套代码骨架内快速切换,实现真正的“AI 即服务”。现在,就让我们在下一行 ABAP 里拥抱智能未来。参考链接均于 2025‑07‑22 提取,推荐读者结合实际版本进一步验证。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 431

水声信号处理开源算法库最新进展

欢迎关注本专栏,一起探索新世界大家好,我是ZhuChunSHU。985院校硕士毕业,现担任算法研究员一职,热衷于深度学习算法研究与应用。曾获得阿里云天池比赛第三名,CCE比赛第五名,科大讯飞Q比赛第六名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法行业就业。希望和大家一起成长进步。今天继续我们的专栏分享!!!!!!!!!!!!!!!!!!!!水声信号处理是海洋科学与工程领域的核心组成部分,对于水下通信、目标探测、海洋环境监测以及生物声学研究至关重要。

u012133341的博客 1254

【个人模板】 快速幂取模,矩阵快速幂,快速乘

#include   using namespace std;   const int MOD = 1007;   int xx(int a,int n,int MOD) //计算a的n次方对MOD取模   {       int ret=1;       int tmp=a%MOD;       while(n)       {           if(n&1)               r

不忘初心,知行统一 350

内存越界一定会导致程序崩溃吗?详解内存越界

本文详细解释了内存越界不一定导致内存越界的问题,全面介绍了C++内存越界的相关内容。

dvlinker的技术专栏 2万+

快速幂和矩阵快速幂详解+模板

1.快速幂 一般的,我们都知道求只需要连续乘3次2就能得到,那么等于多少呢?其实这个一很简单,不就是13个2相乘吗,连续乘13次2就行了。那么,呢? 是不是要连续乘100次、1000次,我们将这类问题归结为求。那么当b很大的时候,是很浪费时间的,往往会造成超时,那有没有更快的计算方法呢?当然了,接下来就是这篇文章的重点:快速幂。 我们以b=13为例,将b表示为二进制:那么:那么我们观察只要b的...

ityanger的技术栈 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

c语言二进制法快速取幂模算法,快速幂取模&快速乘取模

快速幂取模即快速求出(a^b)mod c 的值。由于当a、b的值非常大时直接求a^b可能造成溢出,并且效率低。思路原理就是基于\(a*b \% c = ((a \% c)*(b \% c))\% c\),\(a^b \% c = (a \% c)^b \% c\)公式。求解快速幂:设指数b用二进制表示为\(b = (b_n b_{n-1}...b_2b_1b_0)_2\),\(b = b_0 + ...

weixin_29432863的博客 1168

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

整数快速幂 & 快速幂取模

整数快速幂 & 快速幂取模快速幂a^b^的朴素算法快速幂的原理快速幂【代码】快速幂取模幂取模的朴素的实现快速幂取模原理快速幂取模【代码】矩阵快速幂矩阵快速幂【代码】例题P1226 【模板】快速幂||取余运算P3390 【模板】矩阵快速幂 快速幂 所谓的快速幂,其目的是为了快速求幂,将时间复杂度从O(n)朴素算法的降到O(logn)。 假如现在要求ab,按照朴素算法,就是将a连乘b次,时间复杂度为O(b),即O(n)级别。 ab的朴素算法 // O(n) #include<cstdio>

qq_43232556的博客 1114

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

我的算法不可能这么简单—矩阵快速幂|取模

文章目录学前准备矩阵乘法矩阵快速幂例题洛谷P1962 [斐波那契数列](https://www.luogu.com.cn/problem/P1962)洛谷P1939 [【模板】矩阵加速(数列)](https://www.luogu.com.cn/problem/P1939)洛谷P1306 [斐波那契公约数](https://www.luogu.com.cn/problem/P1306) 学前准备 学习本算法前,请务必确保已经掌握 快速幂 | 快速幂取模 内容! 请先AC本题:洛谷P1226 【模板】快速幂

终曲 2688

矩阵快速幂算法

矩阵快速幂算法、利用矩阵快速幂计算斐波那契数列 矩阵快速幂的本质就是 矩阵+快速幂,思路没什么变化。 快速幂的思路见之前的 快速幂介绍,这里就不多说了。 至于矩阵的话,知道矩阵是啥,怎么算乘法就可以了。 相关矩阵基础 注:已经了解矩阵的可以跳过本部分内容。 简单来说 n∗mn*mn∗m 的矩阵就是个 nnn 行 mmm 列 的大方块。 矩阵要进行乘法运算必须保证第一个矩阵的列数=第二个矩阵的行数。

果光的博客 4487

快速幂取模与矩阵快速幂模板

快速幂算法: 计算 2^9,直接相乘要乘九次; 9的二进制: 1001; 9=2^3+2^0, 将2^9转换为 (2)^(2^3) * (2)^(2^0); 同理,指数的二进制某个位数i为1,则会多乘一个 (2)^(2^i); long long Pow(long long a, long long n){ long long ans = 1; while (n>0){ ...

傻子是小傲娇的博客(大钊) 297

,快速乘,快速幂,矩阵快速幂(求斐波那契数列)

快速幂: 方法一:: 首先快速幂有几个公式: 1.(a^b)mod c=( a mod c)^b mod c; (ab) mod c=[(a mod c)*( b mod c)] mod c;    (积的取余等于取余的积取余) 快速幂算法依赖于一下两个公式: a^b mod c=((a²)^(b/2)) mod c , b是偶数 a^b mod c=((a²)(b/

sinat_35121480的博客 5244

矩阵快速幂

昨天晚上矩阵小王子给我们讲了一下矩阵快速幂,学习了一下,

大神养成中..... 2万+

矩阵快速幂的模板(C++)

矩阵快速幂跟整数快速幂是一样的,只不过答案矩阵的初始状态不再是一个1,而是一个单位矩阵。

KI的博客 8万+

快速幂、快速乘、矩阵快速幂

目录一 快速幂二 快速乘三 矩阵快速幂 一 快速幂 目的:当我们在求f(x) = a ^ x % mod时,f(x)的结果会呈指数型增加,如果我们在最终求完之后进行取模,那么最终的那个结果无论int 或者 long long 都无法装下这么大的数据。 所以我们需要一个防爆的方法来求出正确答案 那么有人问了:如果我要是求把x次方拆分成x个a相乘,每次进行取模可以吗?这样做有问题吗?没有问题,它可以出答案,但时间复杂度太高,太慢了我们能接受吗?不能接受,我们不但要出答案,还要更快 那么我们就需要引入快速幂这个

wxz0v0的博客 617

数论基础——矩阵快速幂模板

1.矩阵简介: 2.单位矩阵: 3.矩阵的加减: 4.常数k与矩阵相乘: 5.矩阵与矩阵相乘: 矩阵乘矩阵就是要我们模拟线性代数中矩阵求矩阵的公式,新的矩阵的第一个数就等于矩阵A的第一行的每一个元素乘上矩阵B的每一列的元素相加起来得到,那么新的矩阵的第m个元素就等于矩阵A的m行的每一个元素乘以矩阵B的m列每一个元素相加即可。 Code: struct matrix { int n,...

ly's Blog 1077

矩阵幂_快速幂_矩阵乘法_模板

最近遇到快速幂的题目有点儿多,写写模板,整理下 【矩阵快速幂】   该算法只适用于方阵   设 A 为方阵 , 快速求 An 的算法 【应用】求递推式的第n项,例如   斐波那契 递推公式 f(n) = f(n-1) + f(n-2)   可以转换成以下矩阵运算:      由上述递推式我们可以求出矩阵 因此原本求 f(1000) 需要递推1000次,时间复杂度为...

一叶之修的博客 989
上一篇: 个人模板 BFS
下一篇: 个人模板 KMP
信鸦
博客等级 码龄10年 10粉丝 133原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值