快速幂
ln2037
用心雕琢我的艺术品。
展开
-
快速乘法
和快速幂类似。思想是把乘法转换成加法。详见代码。#include <iostream>using namespace std;int multi(int a, int b) { int res = 0;//最终值 while(b) { if(b & 1) res += a;//若当前位为1,就相加 a <<= 1;//扩大二倍 b >>= 1;//右移一位 } return res;} int main() { int原创 2021-04-12 23:37:52 · 132 阅读 · 0 评论 -
P3197 [HNOI2008]越狱【快速幂】
题目描述监狱有 nnn 个房间,每个房间关押一个犯人,有 mmm 种宗教,每个犯人会信仰其中一种。如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱。答案对 100,003100,003100,003 取模。输入格式输入只有一行两个整数,分别代表宗教数 mmm 和房间数 nnn。输出格式输出一行一个整数代表答案。输入输出样例输入 #12 3输出 #16说明/提示样例输入输出 1 解释状态编号 1 号房间 2 号房间 3 号房间1 信仰 1 信仰原创 2020-09-13 21:01:02 · 202 阅读 · 0 评论 -
p1045麦森数(高精快速幂)
题目描述形如2P−12{P}-12P−1的素数称为麦森数,这时PPP一定也是个素数。但反过来不一定,即如果PPP是个素数,2P−12{P}-12P−1不一定也是素数。到1998年底,人们已找到了37个麦森数。最大的一个是P=3021377P=3021377P=3021377,它有909526位。麦森数有许多重要应用,它与完全数密切相关。任务:从文件中输入PPP(1000<P<310...原创 2019-10-29 09:12:02 · 310 阅读 · 0 评论 -
矩阵快速幂
先看看快速幂const int mod = 1e9 + 7;typedef long long ll;ll ksm(ll a, ll n){ ll ans = 1; while(n) { if(n & 1) ans = ans * a % mod; n >>= 1; a = a * a % mod; } return ans % mod;...原创 2019-10-15 17:57:37 · 116 阅读 · 0 评论