数论

数论做题注意点

北慕城南 提交于 2019-11-28 04:09:05
  使用筛法的时候如果下标错误很可能出现TLE,其次是RE。(因为本地要跑好久)     ——注意越界 来源: https://www.cnblogs.com/lighten-up-belief/p/11391281.html

数论全集

做~自己de王妃 提交于 2019-11-28 01:37:08
欧几里得算法、拓展欧几里得算法 欧几里得算法:$gcd(a,b)=gcd(b,a%b)$ int gcd(int a,int b) { if (b==0) return a; return gcd(b,a%b); } 快速欧几里得算法(更相减损术):$gcd(a,b)=gcd(b,a-b)$ #define ctz __builtin_ctzll LL gcd(LL a,LL b) { if(!a) return b; if(!b) return a; int t=ctz(a|b); a>>=ctz(a); do { b>>=ctz(b) ; if(a>b) swap(a,b); b-=a; } while(b); return a<<t; } 拓展欧几里得算法:解不定方程$ax+by=gcd(a,b)$ 算$gcd(a,b)$时, 有$ax+by=gcd(a,b)$ $(1)$ 算$gcd(b,a\%b)$时, 有$bx'+(a\%b)y'=gcd(b,a\%b)$ $(2)$ 设$\lfloor \frac{a}{b} \rfloor=k$,有$a \% b = a-k\times b$ 带入$(2)$,有$ay'+b(x'-ky')=gcd(a,b)$, 因为对于任意的$a,b$恒成立,所以有 $ \left\{\begin{matrix} {y=x'-ky'} \\ {x

[数论]拓展中国剩余定理

落花浮王杯 提交于 2019-11-28 01:25:23
拓展中国剩余定理 •拓展中国剩余定理 拓展中国剩余定理来解 $\begin{cases}x\equiv c_{1}\left( mod\ m_{1}\right) \\ x\equiv c_{2}\left( mod\ m_{2}\right) \\ \ldots \\ x\equiv c_r\left( mod\ m_r\right) \end{cases}$ 来源: https://www.cnblogs.com/MMMinoz/p/11385728.html

[数论] 线性求逆元

强颜欢笑 提交于 2019-11-28 01:03:29
线性求逆元 线性求从1到n的$mod \ p$ 的逆元 设$p=ki+r \ (r<i<p,i>1)$ ① 可以得到 $k=\lfloor \frac{p}{i} \rfloor$ ② $r=p \ mod \ i$ ③ $ki+r\equiv 0 (mod \ p)$ ④ 两边同乘$i^{-1}\cdot r^{-1}$得 $kr^{-1}\cdot i^{-1}\equiv 0 (mod \ p)$ 移项得$i^{-1}\equiv -kr^{-1} (mod \ p)$ ⑤ 将②③代入⑤ 得 $i^{-1}\equiv -\lfloor \frac{p}{i} \rfloor\cdot (p \ mod \ i)^{-1}(mod \ p)$ 由于$1^{-1}\equiv 1 (mod \ p)$ 所以1到n $mod \ p$逆元就可以线性递推出来了 1 inv[1]=1; 2 for(int i=2;i<=n;i++) 3 inv[i]=-(p/i)*inv[p%i]; View Code 来源: https://www.cnblogs.com/MMMinoz/p/11384877.html

【数论专题】——推式子

◇◆丶佛笑我妖孽 提交于 2019-11-27 22:09:32
今天主要就是推式子。 数论函数专题。 本文会参考大量资料(或者说照搬),会注明资料来源。 https://oi-wiki.org/(定义和证明等) 前置知识: 积性函数:形如 ,则称 为积性函数。 几个必备积性函数: 欧拉函数:    莫比乌斯函数:   恒等函数:   ,其中 通常记为 单位函数:   除数函数:     通常记做d(n)。 常数函数:   几个结论:                  (推导使用):           Dirichlet卷积:对于两个数论函数f,g,两者的Dirichlet卷积为: 一些基本的卷积式子: (图源OIwiki) 这些式子对化简题目有极大作用。   既然是推式子,直接从一道例题入手:   求:      如果考虑朴素做法,对于n太大的情况无从下手,那么我们来简化式子。   我们考虑引入莫比乌斯函数:   我们枚举(i,j)的大小:       式子内同除以d,得到:       引入莫比乌斯函数:       将枚举顺序变换,同第一步,先枚举(i,j),就可以把第四个sigma放到前面:     后面两个求和因为贡献是1,因此直接写成平方形式:   这里其实就可以直接数论分块写了,但还可以继续推:   令 ,枚举T的大小,并用Dirichlet卷积搞一搞:          我们把phi用线性筛整出来,很容易就得到答案了。

余数(数论分块)

青春壹個敷衍的年華 提交于 2019-11-27 21:30:53
题目描述: 题解: 首先容易想到:当 i > n 时,n mod i = n 所以如果 m > n ,   ans+=((m-n)%mod)*(n%mod)%mod;   m=n; 接下来考虑 i<=n 的情况: 后面这个东西很明显可以O(sqrt(N))算 #include<iostream> #include<cstdio> #include<cmath> using namespace std; typedef long long ll; const ll mod=1e9+7; ll n,m,ans; ll l,r,h,t,cnt,sum; int main(){ scanf("%lld%lld",&n,&m); if(n<=m){ ans+=((m-n)%mod)*(n%mod)%mod; ll sq=sqrt(n); for(ll i=1;i<=n/(sq+1);i++) ans=(ans+(n%i))%mod;//这一区间内的n%i没有特殊规律,只能硬算 for(ll i=sq;i>0;i--){//此处i表示除完以后向下取整的结果 l=n/(i+1)+1;r=n/i;//用n除以[l,r]区间内的数取整完结果均为i //统计 n mod 这些数的余数就是求等差数列:n-i*l,n-i*(l+1),...,n-i*r 的和 h=n-l*i,t=n-r*i;//首项,末项

qbxt Day3 on 2019-8-18

拟墨画扇 提交于 2019-11-27 19:11:45
qbxt Day3 on 2019-8-18 一、基础数论 1.进制转换 进制转换是一个非常简单且基础的问题。 也许我们只需要...Emmm... 列个式子就好了鸭 设 \(k\) 进制数每一位上是 \(a_i\) ,那么 \((x)_k=\sum\limits_{i=1}^{\texttt{位数}}a_i*k^{i-1}\) 这是任意进制下数字的转换 和进制的转换有关的题目大多数围绕这个式子有关。 (NOIp普及组那个可以直接表示一位就够了) 2.辗转相除法(欧几里得算法) 辗转相除法应该是最简单的数论(数论只会gcd) 然后实现方式也很简单,是log级别的。 inline int gcd(int a, int b) { int temp; while (b) temp=a,a=b,b=temp%b; return a; } 为什么呢?我们假设 \(a\geq b\) ,那么 \(a{\%}b\leq \frac{a}{2}\) 。 因此我们这样做的复杂度上限应当最大就是 \(O(logn)\) 的。 证明的话 由裴蜀定理可以推得, \(gcd(a,b)=gcd(b,a\%b)\) ,所以我们一直向下直到...... \(b=0\) 即可。 然后 \(lcm(a,b)\) 的话其实就是 \(\frac{a\times b}{gcd(a,b)}\) 3.扩展欧几里得(exgcd)

2019暑训8月14号 数论

拟墨画扇 提交于 2019-11-27 16:23:03
数论 重要的数论函数: ε(n), 1(n), id(n), μ(n), φ(n), τ(n) Dirichlet卷积 Dirichlet 卷积学习笔记-露迭月 感觉这篇博客讲的比较通透、系统。 由此还寻找到了另一篇讲的很好的dirichlet卷积的博客 铃悬的数学小讲堂——狄利克雷卷积与莫比乌斯反演 事实上,单从mobius的表达式来看它实在是太突兀了,我们应该在dirichlet卷积的角度下认识这个函数。“dirichlet卷积与数论函数共同构成了群”,而群具有逆元与幺元,这里的幺元很自然的就是1,那么我们就定义 mobius函数是1的逆 ,也就是 μ * 1 = ε ,之后通过尝试构造可以得到mobius函数的表达式。 下面介绍几个常见的卷积: φ * 1(n) = id(n) 定理证明: 等式两边再卷上1的逆——μ后可得: φ(n) = id * μ(n) τ(n) = 1 * 1(n) 根据定义这是显然的。 等式两边卷上1的逆后可得: 1(n) = μ * τ(n) mobius函数还有一些性质,这篇博客( Mobius函数 )对其中的三个(mobius是积性函数、mobius的表达式、φ(n) = id * μ(n))进行了干净漂亮的说明。 Mobius反演: 根据“逆”这一重要概念,我们可以方便地得到mobius反演的结论: 形式1(约数反演):若F(n) = f *

数论集合

耗尽温柔 提交于 2019-11-27 16:20:25
零,前言: 学chty_sqy开个数论集合 学OI的时候以看数论就头大,现在该还了 T_T 建议推导和证明不熟或不会的同学动手推导 而且公式看上去不太清楚,学习的同学请仔细阅读 以前数论怎么都学不会,主要还是浮躁,不仔细看,没有动手 orz 一,gcd(欧几里得算法): 两个数a和b的最大公因数被称为gcd(a, b) 求gcd通常用欧几里得算法 原理:gcd(a, b)=gcd(b, a%b) 详情: https://www.cnblogs.com/cdcq/p/11366100.html 代码: 1 int gcd(int a,int b){ return b ? gcd(b,a%b) : a;} 一行gcd 二,exgcd(扩展欧几里得算法): 数论守门员 有一个或者几个变量的整系数方程,它们的求解仅仅在整数范围内进行。 扩展欧几里得算法研究的是形如 a*x+b*y=c 的丢番图方程的解 方程有解当且仅当gcd(a, b)|c 原理:a*x1+b*y1=gcd(a, b),b*x2+(a%b)*y2=gcd(b, a%b),gcd(a, b)=gcd(b, a%b) => x1=y2,y1=(x2-⌊a/b⌋*y2) 详情: https://www.cnblogs.com/cdcq/p/11366100.html 代码: 1 void exgcd(int a,int b

B. Odd Sum Segments(基础数论)

☆樱花仙子☆ 提交于 2019-11-27 14:56:20
题目地址: http://codeforces.com/contest/1196/problem/B You are given an array aa consisting of nn integers a1,a2,…,an You want to split it into exactly kk non-empty non-intersecting subsegments such that each subsegment has odd sum (i. e. for each subsegment, the sum of all elements that belong to this subsegment is odd). It is impossible to rearrange (shuffle) the elements of a given array. Each of the nn elements of the array aa must belong to exactly one of the kk subsegments. Let's see some examples of dividing the array of length 5 into 3subsegments (not necessarily with odd sums): [1,2,3,4,5