快速幂
1)求an当n很大时如10^9Java也不能处理,这时候要用到快速幂
0.分治法
int fastPow(int a, int n) { if (n == 1)return a; int tmp = fastPow(a, n / 2); if (n % 2 == 1)return tmp * tmp * a; else return tmp * tmp; }
1.位运算
n&1,取n的最后一位,并且判断这一位是否需要跳过;
n>>=1,n右移一位,把刚处理的一位去掉
int fastPow(int a, int n) { int res = 1; while (n){ if (n & 1)res *= a; a *= a; n >>= 1; } return res; }
2)快速幂取模
an %m=(a%m)n %m
3)矩阵快速幂
const int mxn = 2;//矩阵的阶 const int mod = 1e9; struct Matrix { int m[mxn][mxn]; Matrix() { memset(m, 0, sizeof(m)); } }; Matrix Multi(Matrix a, Matrix b) { Matrix res; for (int i = 0; i < mxn; i++) for (int j = 0; j < mxn; j++) for (int k = 0; k < mxn; k++) res.m[i][j] = (res.m[i][j] + a.m[i][k] * b.m[k][j]) % mod; return res; } Matrix fastPower(Matrix a, int n) { Matrix res; for (int i = 0; i < mxn; i++) res.m[i][i] = i; while (n) { if (n & 1) res = Multi(res, a); a = Multi(a, a); n >>= 1; } return res; }
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 开发者新选择:用DeepSeek实现Cursor级智能编程的免费方案
· Tinyfox 发生重大改版
· 独立开发经验谈:如何通过 Docker 让潜在客户快速体验你的系统
· 小米CR6606,CR6608,CR6609 启用SSH和刷入OpenWRT 23.05.5
· 近期最值得关注的AI技术报告与Agent综述!