![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论基本算法
_Shmily
这个作者很懒,什么都没留下…
展开
-
HDU -- 5451 Best Solver(广义斐波那契数列)
题目vj链接题面:题意:y=(5+26)1+2x,x(0≤x<232)y=(5+2\sqrt6)^{1+2^x},x(0\le x<2^{32})y=(5+26)1+2x,x(0≤x<232)求:[y]%M,其中[y]指y的整数部分,M为≤46337的质数[y]\%M,其中[y]指y的整数部分,M 为 \le46337的质数[y]%M,其中[y]指y的整数部分,M为≤46337的质数。题解:我们设 An=(5+26)n,Bn=(5−26)n,Sn=An+BnA_n=(5+2原创 2020-08-25 13:08:02 · 111 阅读 · 0 评论 -
P1939 【模板】矩阵加速(数列) (矩阵快速幂)
题目链接题面:题解:求出转移矩阵来,利用矩阵快速幂加速运算。其实这种线性的表达式,杜教BM一下就好啦。代码:#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<string>#include<queue>#define ll long longusing nam原创 2020-08-25 08:06:40 · 132 阅读 · 0 评论 -
P1403 [AHOI2005]约数研究 (数论分块)
题目链接题面:题解:考虑因子x在1–n中出现的次数为n/x枚举因子,数论分块。代码:#include<iostream>#include<cstdio>#include<cstdlib>#include<cmath>#include<string>#include<cstring>#include<algorithm>#include<map>#include<set>原创 2020-08-25 08:06:28 · 127 阅读 · 0 评论 -
Codeforces Round #285 (Div. 2) D. Misha and Permutations Summation (康托展开,逆康托展开,变进制数)
题意:给出两个1–n的全排列 p,q 。ord(p) 为 p 在所有全排列中的字典序排名(从0开始)ord(q) 为 q 在所有全排列中的字典序排名(从0开始)求 排名为( ord(p) + ord(q))% n! 的全排列。题解:先在变进制数下表示 p ,q 的康托展开,然后在变进制数下相加(最后一次相加可能溢出,不处理,相当于对 n! 的取模),再将相加后的变进制数逆康托展开。#include<iostream>#include<cstdio>#include原创 2020-08-24 22:01:22 · 99 阅读 · 0 评论 -
P3811 【模板】乘法逆元 (线性求乘法逆元)
题目连接题面:代码:#include<iostream>#include<cstdlib>#include<cstdio>#include<algorithm>#include<cstring>#include<string>#include<cmath>#include<queue>#include<map>#include<vector>#define ll原创 2020-08-24 22:25:30 · 161 阅读 · 0 评论 -
P3807 【模板】卢卡斯定理
题目连接题面:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<map>#define ll long longusing namespace std;ll p;ll mypow(ll a,ll b){ ll ans=1; while(b) {原创 2020-08-24 22:25:09 · 100 阅读 · 0 评论 -
P4549 【模板】裴蜀定理
题目连接题面:代码:#include<iostream>#include<cstdlib>#include<cstdio>#include<algorithm>#include<cstring>#include<string>#include<cmath>#include<queue>#include<map>#include<ctime>#include<原创 2020-08-24 22:24:52 · 77 阅读 · 0 评论 -
P5091 【模板】扩展欧拉定理
题目连接题面:题解:代码:#include<iostream>#include<cstdlib>#include<cstdio>#include<algorithm>#include<cstring>#include<string>#include<cmath>#include<queue>#include<map>#include<ctime>#inclu原创 2020-08-24 22:24:03 · 197 阅读 · 0 评论 -
P4777 【模板】扩展中国剩余定理(EXCRT)
题目链接题面:代码:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<map>#define ll long longusing namespace std;const int maxn=100010;ll a[maxn],m[maxn];int k;ll q_pow(原创 2020-08-24 22:23:17 · 119 阅读 · 1 评论 -
P4717 【模板】快速沃尔什变换 (FWT)
题目连接题面:代码:#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<string>#include<queue>#define ll long longusing namespace std;const int maxn=1001000;const int m原创 2020-08-24 22:22:42 · 110 阅读 · 0 评论 -
P1134 [USACO3.2]阶乘问题
注意理解:今天做pta也遇到了一个类似的题目,不过那个题目是让求非0后K位。这里,我们先把有可能乘出来10的质因子2和质因子5全部除掉,然后就可以放心大胆的取模啦,最后由于质因子2被多除了,再乘回来就好啦。#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#define ll long long#define p.原创 2020-08-24 21:59:47 · 222 阅读 · 0 评论 -
P5277 【模板】多项式开根(加强版)
P5277 【模板】多项式开根(加强版)这题好像没有a0=0的数据。以下二次剩余使用mod以内较小的那个解。(一)利用B2=A 得到 B=A1/2 利用多项式的幂计算。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<string>#include<queue>原创 2020-08-24 21:58:49 · 160 阅读 · 0 评论 -
P5273 【模板】多项式幂函数 (加强版)
注意:这里多项式快速幂,多项式的幂,幂可以直接对系数的模mod取模。即,m%=mod即可。但是在处理的过程中 要计算 A0m,这里 A0m%mod = A0m%(mod-1)%mod但是不知道为什么。。。我的代码跑的比别人的慢好多。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<str.原创 2020-08-24 21:58:39 · 335 阅读 · 0 评论 -
中国石油大学ACM俱乐部开放训练赛 问题 F: 求和 等比矩阵求和
等比数列是指从第二项起,每一项与它的前一项的比值等于同一个常数的一种数列。对于一个等比数列an=a1 * qn-1,它的前n项的和Sn=a1 * (1-qn)/(1-q)(q≠1)。现在已知A为n*n的矩阵,S=A+A2+A3+…+Am,你能否正确求出S,并且输出S中的每一个元素对1000000007取模后的值。输入输入包括n+1行,第一行包括两个正整数n, m,分别代表矩阵A的大小和S中的项...原创 2020-08-24 21:43:23 · 210 阅读 · 0 评论 -
P4239 任意模数多项式乘法逆
就是:多项式求逆加任意模数ntt。通常处理任意模数ntt有两种方式,这里选择其中一种。吸氧过的。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<string>#incl...原创 2020-08-24 21:42:28 · 216 阅读 · 0 评论 -
P5205 【模板】多项式开根
一、与多项式快速幂一样的思路,取ln,不过得吸氧才能过。不知道另一种写法速度怎么样,先存一下这样写的,再去学另一种写法。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<string...原创 2020-08-24 21:42:18 · 97 阅读 · 0 评论 -
P5245 【模板】多项式快速幂
转化转化,然后再把以前的板子贴一贴就ok了。这个题读入k的时候,用 ‘\n’ 判断结束有问题,用isdigit()判断就过了。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<st...原创 2020-08-24 21:42:09 · 140 阅读 · 0 评论 -
P1495 【模板】中国剩余定理(CRT)/曹冲养猪
题目描述自从曹冲搞定了大象以后,曹操就开始捉摸让儿子干些事业,于是派他到中原养猪场养猪,可是曹冲满不高兴,于是在工作中马马虎虎,有一次曹操想知道母猪的数量,于是曹冲想狠狠耍曹操一把。举个例子,假如有16头母猪,如果建了3个猪圈,剩下1头猪就没有地方安家了。如果建造了5个猪圈,但是仍然有1头猪没有地方去,然后如果建造了7个猪圈,还有2头没有地方去。你作为曹总的私人秘书理所当然要将准确的猪数报给曹总...原创 2020-08-24 21:39:38 · 129 阅读 · 1 评论 -
P6097 【模板】子集卷积
题目链接集合大小为n。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<queue>#include<set>#include<deque>#in...原创 2020-08-24 21:39:25 · 98 阅读 · 0 评论 -
P4726 【模板】多项式指数函数(多项式 exp)
一、这题真的被卡了一晚上,各种数组清零,各种函数调用,本来精神状态就不太好,结果还调了那么久。这里有一点不一样的地方就是多项式求逆( inv()函数 )里面的 len 关于 n 的取值和以前不太一样,以前是(n>>1) , 这里是(n-1)>>1 才能过。#include<iostream>#include<cstdio>#include&...原创 2020-08-24 21:53:34 · 287 阅读 · 0 评论 -
P5493 【模板】质数前缀统计
这题需要用拉格朗日插值法求前n项的 ik 的和。然后用min25筛一下质数的贡献。有点卡常,能预处理的都预处理。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<string>...原创 2020-08-24 21:36:08 · 184 阅读 · 0 评论 -
拉格朗日插值法:
①、CF622F The Sum of the k-th Powers:求 sum of im ,i from 1 to n mod 1e9+7。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#in...原创 2020-08-24 21:35:57 · 91 阅读 · 0 评论 -
P4512 【模板】多项式除法
题目描述给定一个 n 次多项式 F(x) 和一个 m 次多项式 G(x) ,请求出多项式 Q(x), R(x),满足以下条件:Q(x) 次数为 n−m,R(x) 次数小于 mF(x) = Q(x) * G(x) + R(x)所有的运算在模 998244353 意义下进行。输入格式第一行两个整数 n,m,意义如上。第二行 n+1个整数,从低到高表示 F(x) 的各个系数。第三行 m+...原创 2020-08-24 21:35:45 · 167 阅读 · 0 评论 -
P5325 【模板】Min_25筛
题目链接一定要记得随时取模和%mmh学长。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<string>#include<queue>#include<...原创 2020-08-24 21:35:32 · 89 阅读 · 0 评论 -
P6091 【模板】原根
求全部原根的板子:#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<string>#include<queue>#define ll long long#def...原创 2020-08-24 21:35:04 · 657 阅读 · 0 评论 -
P4721 【模板】分治 FFT
①、多项式求逆求解:O(n logn):#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<string>#include<queue>#define ll lon...原创 2020-08-24 21:34:53 · 100 阅读 · 0 评论 -
P5394 【模板】下降幂多项式乘法
题目不好复制要吸吸氧才能过。这种写法比第二种写法少一次ntt。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<string>#include<queue>#...原创 2020-08-24 21:34:18 · 108 阅读 · 0 评论 -
P5395 【模板】第二类斯特林数·行
题目描述第二类斯特林数S(n,m)表示把n个不同元素划分成m个相同的集合中(不能有空集)的方案数。给定n,对于所有的整数i∈[0,n],你要求出S(n,i)由于答案会非常大,所以你的输出需要对167772161(225×5+1,是一个质数)取模。输入格式一行一个正整数n,意义见题目描述。输出格式共一行n+1个非负整数。你需要按顺序输出 S ( n , i )输入输出样例输入 #...原创 2020-08-24 21:33:01 · 152 阅读 · 0 评论 -
P5656 【模板】二元一次不定方程(exgcd)
给定不定方程ax+by=c若该方程无整数解,输出 −1若该方程有整数解,且有正整数解,则输出其正整数解的数量,所有正整数解中 x 的最小值,所有正整数解中 y 的最小值,所有正整数解中 x 的最大值,以及所有正整数解中 y 的最大值若方程有整数解,但没有正整数解,你需要输出所有整数解中 x 的最小正整数值, y 的最小正整数值正整数解即为 x,y 均为正整数的解, 0 不是正整数整数解...原创 2020-08-24 21:32:41 · 291 阅读 · 0 评论 -
P4725 【模板】多项式对数函数(多项式 ln)
题目描述给出 n−1 次多项式 A(x),求一个 modxn 下的多项式 B(x),满足 B(x)≡lnA(x).在 mod 998244353 下进行,且ai ∈[0,998244353]∩Z输入格式第一行一个整数 n.下一行有 n 个整数,依次表示多项式的系数a0 ,a1 ,⋯,a n−1 .保证a0 =1.输出格式输出 n 个整数,表示答案多项式中的系数 a0 ,a1 ,⋯...原创 2020-08-24 21:31:25 · 290 阅读 · 0 评论 -
P4781 【模板】拉格朗日插值
n + 1个x坐标不同的点可以确定唯一的最高为n次的多项式知道n+1个点,求第k项。#include<iostream>#include<cstdio>#include<cstring>#include<queue>#define ll long long#define pb push_back#define pr make_pair...原创 2020-08-24 21:31:17 · 85 阅读 · 0 评论 -
康托展开
一、康托展开:P5367 【模板】康托展开树状数组维护。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<queue>#include<set>#includ...原创 2020-08-24 21:30:44 · 124 阅读 · 0 评论 -
P5495 【模板】Dirichlet 前缀和
维护一个质因子分解之后,关于指数的前缀和。理论时间复杂度O(nloglogn)#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<queue>#include<set&g...原创 2020-08-24 21:29:49 · 92 阅读 · 0 评论 -
P4718 【模板】Pollard-Rho算法
不知道为什么原来的板子一直T。所以换了个板子。讲真,觉得原来的板子没问题啊啊啊啊。#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<cstdlib>#include<...原创 2020-08-24 21:36:20 · 178 阅读 · 0 评论 -
P4783 【模板】矩阵求逆
题目描述求一个N×N的矩阵的逆矩阵。答案对10^9+7 +7取模。输入格式第一行有一个整数N,代表矩阵的大小;从第2行到第N+1行,每行N个整数,其中第i+1行第j列的数代表矩阵中的元素aij 。输出格式若矩阵可逆,则输出N行,每行N个整数,其中第ii行第jj列的数代表逆矩阵中的元素 bij,答案对10^9+7取模;否则只输出一行 No Solution。(A,E)–>(E,...原创 2020-08-24 21:28:29 · 199 阅读 · 0 评论 -
P5435 【模板】快速 GCD:
一种 O( 值域 )时间预处理 O(1) 时间求最大公约数( gcd )的算法#include<iostream>#include<cstdlib>#include<cstdio>#include<algorithm>#include<cstring>#include<string>#include<cma...原创 2020-08-24 21:28:19 · 230 阅读 · 1 评论 -
min_25筛
一定要先%mmh学长。做题前没有%mmh学长,一直WA。例①:Libre OJ #6053. 简单的函数:定义函数(1) f ( 1 ) = 1。(2) f ( pc ) = p ⊕ c,p为质数,⊕为异或(3) f ( a b ) = f ( a ) f ( b ) a与b互质。求前n项和ans。 输出ans%(1e9+7)。其中n小于等于1e10。题解:...原创 2020-08-24 21:17:50 · 166 阅读 · 1 评论 -
杜教筛
一定要先%mmh学长例①:P4213 【模板】杜教筛(Sum):题目描述给定一个正整数N(N≤231−1)求ans1= ∑φ(i) from 1 to nans2= ∑μ(i) from 1 to n输入格式一共T+1行 第1行为数据组数T(T<=10) 第2~T+1行每行一个非负整数N,代表一组询问输出格式一共T行,每行两个用空格分隔的数ans1,ans2输入输...原创 2020-08-24 21:17:41 · 107 阅读 · 0 评论 -
容斥原理:
一、多重集的组合数:#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<cmath>#include<string>#define ll long longusing namespace std;cons...原创 2020-08-24 20:37:19 · 103 阅读 · 0 评论 -
莫比乌斯函数:
一、#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>using namespace std;int p[50010],n;int prime(int m){ int temp=0,k=m; fo...原创 2020-08-24 18:32:31 · 159 阅读 · 0 评论