![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论
Deft1592
这个作者很懒,什么都没留下…
展开
-
CF 1107B(数论,规律)
B. 数字根每次测试的时间限制1秒每次测试的内存限制256 兆字节输入标准输入输出标准输出今天在数学课上,Petya 学习了数字根。非负整数的数字根是通过对数字求和的迭代过程获得的单个数字值,每次迭代都使用前一次迭代的结果来计算数字和。该过程继续,直到达到一位数。让我们表示的数字根 X 作为 秒( x ). 然后秒( 5 ) = 5, 秒( 38 ) = S( 3 + 8 = 11 ) = S( 1 + 1 = 2 ) = 2, 秒( 10 ) = S( 1 + 0 = 1 ) = 1.佩佳原创 2021-10-06 22:55:39 · 121 阅读 · 0 评论 -
dfs与数学的应用
链接:https://ac.nowcoder.com/acm/problem/50042来源:牛客网**kotori拿到了一些正整数。她决定从每个正整数取出一个素因子。但是,kotori有强迫症,她不允许两个不同的正整数取出相同的素因子。她想知道,最终所有取出的数的和的最小值是多少?注:若a%k==0,则称k是a的因子。若一个数有且仅有两个因子,则称其是素数。显然1只有一个因子,不是素数。输入描述:第一行一个正整数n,代表kotori拿到正整数的个数。第二行共有n个数ai,表示每个正整数的值。原创 2021-08-08 19:57:21 · 82 阅读 · 0 评论 -
同余方程模板
ax +by=c,c=gcd*t,#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<set>#include<string.h>#include<vector>#include<deque>#define IOS ios::sync_with_stdio(0); cin.tie...原创 2021-08-05 18:29:22 · 74 阅读 · 0 评论 -
扩展中国剩余定理的应用
链接:https://ac.nowcoder.com/acm/problem/15068来源:牛客网uu遇到了一个小问题,可是他不想答。你能替他解决这个问题吗?问题:给你k对a和r是否存在一个正整数x使每队a和r都满足:x mod a=r,求最小正解x或无解。这道题必须用扩展中国剩余定理来解决,因为无论模数是否互质都可以满足次定理,即从第二个开始每次对aax+bb=a[i]y+b[i]求最小整数解,之后把每次加上aax,每次对(aa,a[i])求最小公倍数lcm。#include<.原创 2021-08-04 19:45:10 · 86 阅读 · 0 评论 -
容斥原理及其应用
题目:集合中的质数题目描述给出一个集合和一个数m。集合里面有n个质数。请你求出从 1 到 m 的所有数中,至少能被集合中的一个数整除的数的个数。输入描述:第一行两个正整数 n 和 m 。第二行n个正整数,分别为集合中的质数。输出描述:输出一个整数,表示符合要求的正整数的个数。输入3 375 7 13输出13知识点:1.容斥原理。分析:如果集合中只有一个数,那么答案就是m/a1,如果 集合中只有两个数,那么答案等于m/a1+m/a2-m/lcm(a1,a2),(能被a1整原创 2021-08-02 18:38:39 · 140 阅读 · 0 评论 -
杜教筛的介绍
杜教筛是圈内的一个老师发明的,有狄利克雷卷积推出来的一个算f(n)的前缀和的比较快的算法大概在O(2/3)范围内通常令g=1算一些特殊函数的前缀和:莫比乌斯函数cosnt int maxn=1e5+9;vector<int>primes;bool vis<maxn>;ll mu[maxn],smu[maxn];unordered_map<ll ,ll >memu;void init(){ mu[1]=1; for(int i=2;i&l原创 2021-07-29 14:53:01 · 1816 阅读 · 0 评论 -
Miller Rabin 素数测试
先说下伪素数的概念,费马小定理的逆不成立的合数成为伪素数,即满足a的x-1mod x=1但不是素数。通常我们判断奇素数(2肯定是素数)由费马小定理与二次剩余定理得到,1的(x-1)/2=1modx所以对上述底数a要么为1,要么为-1(取模后)所以我们把x-1进行不断二分,在这些2的m次中要么全为1,要么中间有一个-1,之后全为1,这样条件下,它大概率是素数,在2的64次以内,他人已经为我们找好了检验素数的a,只要全部满足,必为素数。a: 2, 325, 9375, 28178, 450775,.原创 2021-07-25 10:46:15 · 118 阅读 · 0 评论 -
二次剩余的介绍
我们定义n==x*xmod p 中如果有非零解称n为p的二次剩余,不过并非所有数都有二次剩余,在此我们只讨论p为奇素数的情况,我们引用l勒让德符号,(a/p)={1,有二次剩余,0,amodp==0,-1,无二次剩余}。那么如何求解二次剩余的解呢,我们有欧拉准则(a/p)=a的(p-1)/2次这个证明很简单,费马小定理可以看出。我们使用Cipolla算法去解p的二次剩余先找到a满足(a*a-n)的(p-1)/2次满足二次非剩余,然后定义i*i=a*a-n,代入即n=(a+i)的(p+1)/2次。原创 2021-07-24 11:09:46 · 291 阅读 · 0 评论 -
原根的介绍与初步应用
在学习欧拉定理后,我们知道a的1次到a的fai(m)次有一个长度为fai(m)的循环节,然而我们并不能保证这个循环节是最小的,于是又定义这个循环节我们成为阶,当a在模m意义下阶与fai(m)相等,我们称a为m的原根,一个数的原根不止一个,我们通过定理可 证明他必须是2,4,p的q次,2*p的q次,p为奇素数,可以证明原根个数为fai(fai(m))个,为a,a的s次(s为小于m的互质数),想要求原根通过暴力即可,因为科学家发现这种数小于n的1/4;#include<cstdio>#inc原创 2021-07-23 15:07:42 · 159 阅读 · 0 评论 -
POJ-2115(求解同余方程模板题)/约数和及其个数定理
poj—2115:题意大概是给你a,b,c,k,求解方程cx-2的k次*m=b-a;典型的扩展欧几里得求解最小x题下面是代码:#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<set>#include<string.h>#include<vector>using namespace std;原创 2021-07-19 17:35:03 · 241 阅读 · 0 评论 -
大步小步算法(求解离散对数)
baby step giant step简称为大步小步算法,是一个用来求解离散对数的方法,设a的b次对m取模得b,a与m互质时我们令x=At-B,a的At次等于b*a的B次,之后先对右边的数进行存储,,哈希map速度快一点,之后再从左边找,有则返回值,这是一种类似于meet In the middle 的算法,不难验证我们取t为sqrt(fi(m))则可以搜索到所有数值,为了避免算欧拉函数我们令t=sqrt(m),扩展大步小步算法,当a与m不互质时,我们把式子写成a*a的x-1次+mn=b,同除d若原创 2021-07-16 11:41:37 · 1151 阅读 · 0 评论 -
拓展欧拉定理
拓展欧拉定理指的是:a的欧拉函数(m) 对m取模为1,当a与m互质的情况下成立,如果m为质数则退化成费马小定理 a的p-1次 mod p=1,在算法竞赛中我们常常要用到他的推论 :a 的b次等价于a 的【b mod 欧拉函数(m)】次对m取模,那么如果a与m不互质的时候怎么办呢下面就引出了扩展欧拉定理:当b>=fai(m)时,a的b次等价于a的bmod fai(m)+fai(m)次(b<fai(m)时直接快速幂),这个定理也很好证明:把m写作写作质数的积,因为a与m每个质数互质,欧..原创 2021-07-13 10:50:01 · 2427 阅读 · 0 评论 -
卢卡斯定理
卢卡斯定理在处理组合数学的大数问题是十分有用的,直接上定理,证明也很好证但在这里不在赘述,直接上定理下面是洛谷的一道模板题(3807)#include<stdio.h>#include<algorithm>#include<string.h>#include<cstring>#include<iostream>using namespace std;typedef long long ll;const int N=1..原创 2021-07-11 18:25:23 · 104 阅读 · 0 评论 -
欧拉函数的初步介绍
欧拉函数F(x)指小于等于x的质数的个数有下面三个性质:f(p的n次)=p的n-1次乘上p-1f(ax)=af(x);f(ab)=f(a)*f(b)第三个性质又是积性函数的定义下面是代码段:#include<stdio.h>#include<algorithm>#include<iostream>#include<cstring>#include<vector>using namespace std;con原创 2021-07-10 16:14:49 · 297 阅读 · 0 评论 -
中国剩余定理与素数筛
中国剩余定理,也叫孙子定理,之所以叫这个名字,是因为《孙子算经》中有这样一个问题:有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?这个被叫做“物不知数”的问题本质上是解下面的同余方程组:下面以洛谷曹冲称象的题为例,求给定n个模与n个余数,求解x,x mod r1=a1类似这种要保证x能够对n个数都成立,即把x1,x2,...,xn每个数求出特解,最后加起来mod r1*r2*...rn即可随意先把每个余数乘起来得r,要保证对每个数对剩余n-1个数mod成立,设p=r.原创 2021-07-09 18:37:16 · 362 阅读 · 0 评论 -
扩展欧几里得和逆元
今天又是学数论学自闭的一天。。。。扩展欧几里得所谓扩展欧几里得就是求同余不定方程的解,具体方法就是需要对x和y进行变换如ax+by=c,由翡蜀定理得c必须是gcd(a,b)的倍数才有解,方程等价于bx0+a mod b y0=c等价于bx+[a-(a/b)*b ]y0等价于ay0+b[x-a/b *x0]=c,即x=y0,y=x-a/b*x0,int exgcd(int a, int b, int &x, int &y){ if (b == 0) {原创 2021-07-08 16:13:28 · 87 阅读 · 0 评论 -
快速幂与快速大数幂
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;typedef long long LL;const int mod=1e9+7;LL q_pow(LL a,LL n){ LL ans=1; while(n){ if(n&1)ans=ans*a%mod; a=a*a%mod; n>&...原创 2021-07-07 21:13:23 · 139 阅读 · 0 评论