
快速幂
seez
njfu
展开
-
1290. 越狱 (逆向思维)
分析:正向很难考虑,考虑逆向逆向:有m种宗教,n个犯人犯人所有宗教信仰的情况:m^n (m*m*m*...一共n次)犯人宗教信仰不会越狱的情况:第1个犯人可选宗教数为m 第二个犯人可选宗教数为m-1(左边选了什么,当前不能选...)综上:所有会发生越狱的情况=所有情况-不发生越狱=m^n-(m*(m-1)^(n-1))#include <iostream>#include <algorithm>using namespace std;con..原创 2022-02-10 11:17:37 · 335 阅读 · 0 评论 -
1289. 序列的第k个数(快速幂)
原题- AcWing分析:等比数列:a*c=b^2 第k项 a+(k-1)*(b-a)等差数列:a+c=2b 第k项 a+(b/a)^(k-1)常数列: a==b==c#include <iostream>#include <algorithm>using namespace std;typedef long long ll;const int mod=200907;ll qmi(ll a,ll k){ ll res=1;...原创 2022-02-10 10:51:40 · 348 阅读 · 0 评论 -
数论---欧拉定理,快速幂求逆元
欧拉定理内容:如果存在任意两个正整数a,n,满足a与n互质,那么,f(n)表示的是欧拉函数:1~n中与n互质的数个数证明:证明结束快速幂求逆元同余:给定一个正整数m,如果两个整数a,b满足(a-b)能够被m整除,那么可以认为a与b对模m同余,记为a 同余 b逆元:就是一个数的倒数,a/b (mod n) == a*c (mod n),c就是b的逆元c可以看为b的倒数,如果b特别大,就要把b-1 换为 c...原创 2022-02-04 16:33:02 · 1309 阅读 · 0 评论 -
7. 混合背包问题
7. 混合背包问题 - AcWing题库对于混合背包问题,其实就是三种背包一起用,但是这里难点在于,多重背包需要二进制优化#include <iostream>#include <algorithm>using namespace std;const int N=1005;int dp[N];int main(){ int n,m; cin>>n>>m; for(int i=0;i<n;i++) ...原创 2022-02-01 20:21:33 · 143 阅读 · 0 评论 -
90. 64位整数乘法
原题链接根据快速幂的思想b=(b1*1+b2*2+b3*4...+bn*2^n-1)res=a*(b1*1+b2*2+...)#include <iostream>#include <algorithm>using namespace std;typedef long long ll;int main(){ ll a,b,p; cin>>a>>b>>p; ll res=0; ...原创 2022-01-28 18:26:25 · 757 阅读 · 0 评论 -
89.a^b (快速幂)
由于b是10^9,如果直接遍历一遍b,那就需要10^9次,势必是会超时的快速幂的思想如下:一个整数b必然可以表示为多个2的次幂的和其中 一定可以表示为只为0,1两种数字的情况那么b表示为二进制的话,b 的 k位上的数字就代表 由于可以只表示为0,1,对于0的就可以跳过,对于1的才需要记录快速幂:让b从尾部开始枚举,a刚开始=a ...原创 2022-01-21 13:42:55 · 345 阅读 · 0 评论