![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论
&稚始稚终
这个作者很懒,什么都没留下…
展开
-
fft在字符串匹配中的应用
残缺的字符串(洛谷P4173)#include<bits/stdc++.h>using namespace std;const int N=1e6+10,M=1<<20;const double PI=acos(-1);string str1,str2;double s1[N],s2[N];struct Complex{ double x,y; Complex operator+ (const Complex &t) const {原创 2021-07-28 22:09:53 · 153 阅读 · 0 评论 -
fft板子
#include<bits/stdc++.h>using namespace std;const int N=3e5+10;const double PI=acos(-1);int n,m;struct Complex{ double x,y; Complex operator+ (const Complex &t) const { return {x+t.x,y+t.y}; } Complex operator- (原创 2021-07-28 22:08:01 · 172 阅读 · 0 评论 -
中国剩余定理模板(互质与非互质)
互质#include<bits/stdc++.h>using namespace std;int exgcd(int a,int b,int &x,int &y){ if(b==0) { x=1,y=0; return a; } int d=exgcd(b,a%b,y,x); y-=a/b*x; return d;}int Chinese_Remainder(int mod[],int p转载 2021-03-19 16:11:44 · 144 阅读 · 0 评论 -
扩展欧几里得算法与中国剩余定理
在《孙子算经》中有这样一个问题:有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?这个问题说的是,有一件物品,我们不知道它的数量。但是,如果三个三个数,最后会剩下两个;如果五个五个数,最后会剩下三个;如果七个七个数,最后会剩下两个。问这个东西的数量是多少?实际上,这个问题在现在我们可以将其转化为一个同余方程组:中国剩余定理告诉了我们像这样的同余方程组的解。这个定理又称为孙子定理,通常被简写成CRT这篇文章将会从欧几里得算法开始讲起,之后过渡到扩展欧几里得算法解线性方程,最后介绍中国转载 2021-03-19 15:46:06 · 584 阅读 · 1 评论 -
二项式反演的应用
众所周知,二项式反演可以表示成是一个及其对称的式子,常用的表达式是网上有很多很好的证明,比如这个博客,感觉容斥的证明比较形象,这里就不多赘述了。恰好和至多的转换如果要求blabla恰好有k个blabla的时候,有时候会很难算,而求至多有k个blabla的时候会很好算设 fi表示恰好的方案数, g i 表示至多的方案数,则有根据二项式反演有恰好和至少的转换同样有时候至少k个blabla的要更好求设 f i 表示恰好的方案数,g i表示至少的方案数,则有根据二项式反演有...原创 2021-03-14 10:33:38 · 234 阅读 · 0 评论 -
C. Orac and LCM(数学)
思路:gcd( lcm(a1,a2) , lcm(a1,a3) ,lcm(a1,a4) ……lcm(a1,an) )因为都有一个公共因子a1所以gcd1=lcm( a1, gcd(a2,a3,a4……an) )同理 gcd2也是这样的最终答案是gcd(gcd1,gcd2……gcdn)所以我们只要求一个后缀gcd即可重要性质:gcd(lcm(a1,a2),lcm(a1,a3),lcm(a1,a4),…,lcm(a1,an))=lcm(a1,gcd(a2,a3,a4,…,an)AC Code.原创 2021-02-15 16:11:16 · 323 阅读 · 0 评论 -
整除分块(数论分块)
整除分块整除分块是为了解决一个整数的求和问题:如果直接暴利计算,复杂度是O(n)的,若n很大会超时。但是,用整除分块来求解,复杂度是O(n1/2)的。下面以n==8为例,列出每个情况:对第二行求和,结果是20观察上面第二行 8 / i 的值发现是逐步变小的,并且很多相等,这是整除操作的规律。例如:8/1 = 88/2 = 48/3 = 8/4 =28/5 = 8/6 = 8/7 = 8/8 =1为了对这些整数的结果快速求和,自然能想到,把它们分成一块一块的,其中每一块的 8 / i转载 2021-02-13 16:01:34 · 1606 阅读 · 1 评论 -
欧拉降幂
(本篇没有涉及公式的推导)欧拉函数:就是对于一个正整数n,小于n且和n互质的正整数的个数记做φ(n) 。欧拉函数的通式:φ(n) = n * ( 1 - 1 / p1) ( 1 - 1 / p2 ) ( 1 - 1 / p3 ) * ( 1 - 1 / p4 )……( 1 - 1 / pn )其中p1,p2……pn为n的所有质因子,n是不为0的整数。(唯一和1互质的数就是1本身)。所以根据通式可以打出以下代码:ll eular(ll n){ ll ans=n; for(in原创 2021-02-02 22:14:26 · 1542 阅读 · 3 评论 -
Pollard_Rho算法(大数质因数分解)
#include<iostream>#include<cstdio>#include<cstdlib>#include<cmath>#include<cstring>#include<algorithm>#include<queue>#include<ctime>#define ll long long#define ull unsigned long long#define ld long转载 2021-01-21 18:38:06 · 377 阅读 · 0 评论 -
Miller-Rabin随机法判定大质数
在测试一些非常大的数时,如果用根号n的方法判断也会耗掉大量时间,实际上我们有更快的方法——Miller-Rabin随机法我们知道,费马小定理:假如p是质数,且**(a,p)=1**,那么a^(p-1)≡1(mod p)。即假如p是质数,且a,p互质,那么a的(p-1)次方除以p的余数恒等于1。在大多数情况下费马小定理的逆定理都是成立的,那么我们就得到了一个定理的直接应用,对于待验证的数p,我们不断取a∈[1,p-1]且a∈Z,验证a^(p-1) mod p是否等于1,不是则p果断不是素数,共取s次。其中转载 2021-01-21 17:49:14 · 354 阅读 · 0 评论 -
数论之因子个数的求法
1. N的因子个数 条件:给定任意一个一个正整数N 要求:求其因子的个数 首先给出结论:对于任意的整型N,分解质因数得到N= P1^x1 * P2^x2* …… * Pn^xn; 则N的因子个数M为 M=(x1+1) * (x2+1) * …… *(xn+1); 证明过程:...转载 2020-12-14 20:27:23 · 2916 阅读 · 0 评论