![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
从0开始的数论
好好反思
ddgo
给我高高飞起来啊!(ACM退役,转JAVA后端了)
展开
-
质数判定 及筛选 及分解质因数 (模板) 及例题
质数判定 试除法: 若正整数N是合数,则存在一个能整除N的数T,且T <= sqrt(N)。 代码: 判断一个数是不是质数。 #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #include<iostream> #define int long long using namespace std; const int N = 1e3+10; bool is_prime(int x){ if(x < 2) re原创 2020-12-24 23:53:18 · 183 阅读 · 0 评论 -
扩展欧几里德算法证明及例题
ax + by = gcd(a,b) = gcd(b,a%b) = bx1x_1x1 + (a - abb)y1=ay1+b(x1−aby1\frac{a}{b}b)y_1 = ay_1 + b(x_1 - \frac{a}{b}y_1bab)y1=ay1+b(x1−bay1) 考虑gcd的调用顺序 有 x = y1y_1y1, y = (x1x_1x1 - aby1\frac{a}{b}y_1bay1) 当b == 0 时,则有 x = 1,y = 0; 故有代码为 int exgc原创 2020-12-23 23:17:36 · 387 阅读 · 0 评论 -
最大的数(洛谷p1198)(线段树/单调栈+二分/单调栈+并查集)
题目地址 线段树: 直接就是标准模板,先直接建立一个长度为2e5的线段树,然后单点修改,区间查值。 #include<iostream> #include<algorithm> #include<cstring> using namespace std; const int N = 2e5 + 10; #define l(x) t[x].l #define r(x) t[x].r #define ans(x) t[x].ans struct SegmenTree{原创 2021-03-04 16:03:50 · 168 阅读 · 1 评论 -
Colossal Fibonacci Numbers! (模定理) (uva 11582)
寻找循环节,对于斐波那契的每一个数,都不相同,而在mod n之后,最坏第n次出现与之前的相同。 而当我们找到第二次0,1出现的位置时,就得到了循环节。最坏n2n^2n2次出现。 最后输出aba^bab%m的位置对应的值。 当n等于1时,输出0,此时f[]为全0; 注意爆long long. #define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); #include<bits/stdc++.h> #define int long原创 2020-12-27 00:06:16 · 110 阅读 · 0 评论 -
青蛙的约会 (扩展欧几里得) (洛P1516)
题目地址 题意描述是在一个环下,青蛙一直跳,最后跳到同一个地方最小天数,每天都必须跳。 下式中t和p为常数 故可得x+tm=y+tn(modl)x + tm = y + tn \pmod lx+tm=y+tn(modl) -> t(m−n)=(y−x)(modl)t(m-n) = (y - x) \pmod lt(m−n)=(y−x)(modl) ->令a=m−n,c=y−x令a = m-n ,c = y - x令a=m−n,c=y−x ->at=c(modl)at = c \pmod l原创 2020-12-24 21:15:29 · 275 阅读 · 0 评论 -
有理数取余 (扩展欧几里得) (洛P2613)
题目地址 将题目公式转换一下。 已知 p=19260817p = 19260817p=19260817 c=abc = \frac{a}{b}c=ba 求 c mod p==x mod pc \bmod p == x \bmod pcmodp==xmodp -> ab mod p==x mod p\frac{a}{b} \bmod p == x \bmod pbamodp==xmodp -> bx=a(modp)bx = a\pmod pbx=a(modp) 此题 a,b 过大,原创 2020-12-24 12:47:13 · 274 阅读 · 0 评论 -
同余方程 (扩展欧几里得) (洛P1082)
题目地址 题目化简 ax−yb=1ax -yb = 1ax−yb=1 要求最小x.典型扩展欧几里得方程式。 显然 1∣gcd(a,b)1 | gcd(a,b)1∣gcd(a,b) 故方程始终有解。 用模板求出 x. 现在考虑,如何使x最小. 假设当前求出了一个xxx。 a∗x−1=bya*x - 1 = bya∗x−1=by -> x=by−1ax = \frac{by-1}{a}x=aby−1 a,b互质,为满足x为整数,y只能改变a的倍数。 化简得 x=b(y−ka)−1ax = \fr原创 2020-12-23 23:15:31 · 136 阅读 · 0 评论