玄学--数论
China震震
正在学习acm中,热爱it,大家一起交流学习啊!!!度厂实习生。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数论 欧几里得
最大公约数算法欧几里得算法:算法分析:欧几里德算法是计算最大公约数的传统算法,也是最简单的算法,效率很高时间复杂度:O(lgn)(最坏情况:斐波那契数列相邻的两项)空间复杂度:O(1)但是,对于大整数来说,取模运算非常耗时Stein算法算法分析渐近时间,空间复杂度均与欧几里德算法相同原理:gcd(ka,kb)=k*gcd(a,b)最大特点:只有移原创 2017-04-17 22:16:00 · 604 阅读 · 0 评论 -
组合数
组合数,高中接触过,也一直没有总结过,现在来总结一下水水。组合数从高中时候就学,蒟蒻就不解释了,越解释越乱。上公式其实组合数之间满足杨辉三角的关系求解组合数一般用到递推的方法,复杂度为O(n^2);递推的代码:#includeconst int N = 2000 + 5;const int MOD = (int)1e9 + 7;int comb原创 2017-05-08 19:08:01 · 535 阅读 · 0 评论 -
组合数之卢卡斯定理
前边刚学习了组合数。但是有一个问题,我们前边求解的组合数都是特别小的数,如果数字很大的话,怎样才能求解除答案呢??下边就用到了卢卡斯定理。卢卡斯定理是专门用来求解大数的组合数定理。比如:求C(n, m) % p , n看到没有,n和m这么大,但是p却很小,我们要利用这个p。原创 2017-05-08 20:17:41 · 695 阅读 · 0 评论 -
hdu1584 蜘蛛牌(DFS)
#include #include #include using namespace std;const int maxn=105;int equ,xsum;//行数为equ,表示方程的个数,xsum表示变元个数int a[maxn][maxn];int x[maxn];//解集bool freeX[maxn];//判断是否是不确定的变元int free_num原创 2017-04-25 20:10:30 · 445 阅读 · 0 评论 -
高斯消元
发现有些题目与高斯消元有关,硬着头皮学了学,先把模板整理下一号模板,基本操作代码:#include #include #include #include using namespace std;const int maxn=105;int equ,xsum;//行数为equ,表示方程的个数,xsum表示变元个数int a[maxn][maxn];int x[maxn];原创 2017-04-26 14:10:55 · 371 阅读 · 0 评论 -
康拓展开
理论:X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! ,其中a[i]为当前未出现的元素中是排在第几个(从0开始)。个人理解:康拓展开类似于给你一组数,让你求解其在全排列中的位置,或者给你它在全排列中的位置,让你求解数值。详解:(转自网上的大神)康拓展开模板:void cantor(int s[]原创 2017-05-09 16:34:23 · 349 阅读 · 0 评论 -
素数问题-线性筛法
超快线性筛,挖坑。原创 2017-05-30 11:07:18 · 388 阅读 · 0 评论 -
之江学院第0届校赛决赛 K-qwb与小数
题目链接:http://115.231.222.240:8081/JudgeOnline/problem.php?cid=1005&pid=10题目思路:简单粗暴,让你求解小数点后第n位数,题解也简单粗暴,就是利用快速模幂,关键是怎么用。核心:我们求小数点后的数的求法就是 a%b*10/b,.. 两位的话就是 a%b*10%b*10/b三位就是 a%b*10%b*10%b*10/b原创 2017-06-04 18:53:20 · 401 阅读 · 0 评论 -
卡特兰数
挖坑做了一道题是求大小为n的栈的出栈种类的问题,那出栈的不同序列数就遵循卡特兰数。先上一波代码(c++不好写,因为卡特兰数非常大)t=[];t=[0]*101t[0]=1;for num in range(1,101): for num2 in range(0,num): t[num]=t[num-1-num2]*t[num2]+t[num]原创 2017-05-28 20:15:18 · 815 阅读 · 0 评论 -
矩阵快速幂模板
矩阵快速幂---算法复杂度log(n)关于矩阵快速幂的原理和矩阵的计算方法不做过多的解释,在这里针对矩阵快速幂算法做一个简单的模板整理#include using namespace std;#define ll long longconst int mod = 9973;const int Size = 11; //size的大小按照题目的最大数据大小给struct Mat原创 2017-07-30 15:07:43 · 350 阅读 · 0 评论 -
欧拉函数
前言:欧拉函数,一种神奇的乘性函数,今天就来一探究竟。定义:在数论,对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目(φ(1)=1)。此函数以其首名研究者欧拉命名(Euler'so totient function),它又称为Euler's totient function、φ函数、欧拉商数等。 例如φ(8)=4,因为1,3,5,7均和8互质。(参考百部百科)。两个常用的定原创 2017-05-05 19:27:53 · 1386 阅读 · 0 评论 -
计蒜客 机器人的相遇问题(扩展欧几里得模板题)
题目链接:https://www.jisuanke.com/course/615/28212题目大意:求解走多少步后,两个人再次相遇。题目思路:将式子总结成ax+by=gcd(a,b)的形式,从而可用扩展欧几里得进行相应的求解。无解的情况是c/gcd(a,b)不为0代码:#include using namespace std;#define ll long longll原创 2017-08-29 19:06:28 · 1089 阅读 · 0 评论 -
hdu 5974 A Simple Math Problem (数论思路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5974题目大意:给你a和b,让你求出X和Y,使得X + Y = a lcm(x,y) = b题目思路:看数据范围肯定不能进行暴力枚举了!令gcd(x,y) = g;那么g * k1 = x;g * k2 = y;因为g 是最大公约原创 2017-09-28 16:22:47 · 333 阅读 · 0 评论 -
hdu 5980 Find Small A(位运算思维)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5980题目大意:给N个数 每个数都可以拆开成一个32位的2进制 每八位一个字节 每个字节的2进制数换算成十进制的看有多少个97题目思路:一开始读题确实懵,但是理解题意后变得简单了不少,即利用位运算,每八位进行判断,判断组成的数字是否为97即可。学到的东西:思考位运算的性质。原创 2017-09-28 17:02:04 · 316 阅读 · 0 评论 -
Codeforces Round #435 (Div. 2) C. Mahmoud and Ehab and the xor(xor运算应用)
题目链接:http://codeforces.com/contest/862/problem/C原创 2017-09-21 12:06:47 · 223 阅读 · 0 评论 -
hdu5950 Recursive sequence(矩阵快速幂:模板类题目,矩阵快速幂的扩展与学习,复习必看题目)
关于矩阵快速幂构造矩阵的学习,推荐一篇非常完美的博客:http://blog.youkuaiyun.com/u012061345/article/details/52224623(居家旅行必备!!!!超强)题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5950题目大意:给你一个递推公式,然后让你求解第n项的结果。题目思路:原创 2017-10-09 15:41:13 · 611 阅读 · 0 评论 -
hdu5976 Detachment(逆元+二分优化+数学思维)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5976题目大意:给定一个数,让你分成互不相等的n个数(n为自然数),使这些数的乘积最大,输出最大乘积。题目思路:情况1:枚举l,并且剩余的数等于l,这时候应该得到的结果是3*4*5*6*7*....*l*l+2 情况2:枚举l,并且剩余的数小于l,这时候应该得到的值是2*3*4*原创 2017-09-30 16:49:42 · 391 阅读 · 0 评论 -
莫比乌斯反演
啊啊啊,看不懂啊,快比赛了,先找几个简单的数论学习一下,挖坑!!!原创 2017-05-08 18:23:33 · 329 阅读 · 0 评论 -
hdu4556 Stern-Brocot Tree(欧拉函数递推关系)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4556题目:根据题目要求,求解出答案,看题目中的图,找出其中的规律学到的东西:关于分数类的递推关系,要多联系欧拉函数(欧拉函数求解n比n小与n互素的个数也包括1,所以如果以x作为分母,那么它能构成的真分数且不可约分即为x的欧拉函数值)代码:#include #include #inclu原创 2017-05-06 17:31:38 · 646 阅读 · 0 评论 -
数论 扩展欧几里得用法详解
扩展欧几里德算法的应用主要有以下三方面:(1)求解不定方程;(2)求解模线性方程(线性同余方程);(3)求解模的逆元;(1)使用扩展欧几里德算法解决不定方程的办法: 对于不定整数方程pa+qb=c,若 c mod gcd(p, q)=0,则该方程存在整数解,否则不存在整数解。 上面已经列出找一个整数解的方法,在找到p * a+q *原创 2017-04-17 22:28:50 · 617 阅读 · 0 评论 -
hdu找新朋友 欧拉函数
题目不多说了,看了一会用了最弱智的暴力求解果然TLE了,最后上网查了一下正确解法是欧拉函数,下面就简单的总结一下欧拉函数。欧拉函数:在数论,对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为Euler's totient function、φ函数、欧拉商数等。它的一般计算式是:phi(n) = n*(1-1/p1)*(1-原创 2017-01-18 10:24:22 · 639 阅读 · 0 评论 -
中国剩余定理(互质与不互质的情况)
前言:这个东西听说好久了,一直想学但是总是看到一半就放弃了,今天咬咬牙,就去研究一下吧。中国剩余定理:问题引入在《孙子算经》中有这样一个问题:“今有物不知其数,三三数之剩二(除以3余2),五五数之剩三(除以5余3),七七数之剩二(除以7余2),问物几何?”这个问题称为“孙子问题”,该问题的一般解法国际上称为“中国剩余定理”。具体解法分三步:找出三个数:从3和5的原创 2017-05-01 12:11:44 · 4780 阅读 · 1 评论 -
hdu1573 X问题(中国剩余定理 不互质)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1573思路:就是让你通过中国剩余定理求解出多组解,然后求出满足条件的正整数解有多少个。正整数解=x0+lcm*k(x0最小正整数解,k任意非负整数)坑点:1.wtf理论了解不是很透彻,原来中国剩余定理是有0解的!! 2.当解为负数解的时候,你要通过lcm将他调整为最小正整数解。 3.原创 2017-05-01 14:24:11 · 767 阅读 · 0 评论 -
hdu 1788Chinese remainder theorem again(中国剩余定理or同余性质的应用)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1788思路:输入n,k,n是数据的个数,k是要处理的个数,举个例子,x%ai=(ai-k)所以(x+k)%ai=0,所以你利用这个性质,题目就变成了求解最小公倍数。求解出的最小公倍数减去k便是所需要的答案。坑点:说实话,这个题确实能用中国剩余定理,但是只要你好好分析,就会发现用中国剩余定理就有点小题原创 2017-05-01 16:06:55 · 440 阅读 · 0 评论 -
hdu2674 N!Again
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2674题解:打表观察规律。哇掌握了新的技巧!!!遇到类似的题目,直接打表。ac代码:#include #include using namespace std;long long jisuan(long long x){ long long ans=1;原创 2017-04-19 15:04:39 · 256 阅读 · 0 评论 -
hdu2669 Romantic(扩展欧几里得入门)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2669题意:balabala一大堆,其实就是要告诉你,有一个公式是ax+by=1,给你a与b的值让你求解x与y的值(x的值必须是正数)。思路:哇!!!一看这个公式就特别像ax+by=gcd(a,b);然后就能变式成ax+by=1的形式。然后根据扩展欧几里得求出最小的x为x0。又因为x为正值。大家都知原创 2017-04-19 19:22:42 · 541 阅读 · 0 评论 -
hdu 2098 分拆素数和
思路:测试数据较小,直接打素数表,然后便利就可以了,以后再也不用memset了,不知道为啥用bool类型的时候付不了初值,改了!!!!!!!!!代码:#include #include using namespace std;const int maxn=10000+10;bool isprime[maxn];void build(){ isprime[1]=false原创 2017-04-15 17:35:33 · 230 阅读 · 0 评论 -
hdu 1124 Factorial(高斯函数定理)
题意:题目balabala一大堆,其实他的意思就是让你求n!末尾0的个数。思路:今天刚刚学到素数,用高斯函数原理。我解释下:任何正整数n且大于1,都能分解成素数的积,0是怎么来的???使用素数5和2乘积得来的。可以用高斯函数定理来求5的幂和2的幂,又有高斯函数定理5的幂较少,故0的个数由5决定。ac代码:#include #include using namespace std原创 2017-04-15 20:03:20 · 507 阅读 · 0 评论 -
poj2142The Balance(扩展欧几里得+高中数学知识)
学到的东西:ax+by=c 有的欧几里得题目需要区分a,b的大小,比如当c>0时,如果a>b则x不可能为负值,只有y有可能为负值;如果b>a则y不可能为负值,只有x可能为负值!!!题目:http://bailian.openjudge.cn/practice/2142/题解:在天平两侧放若干砝码 和一堆沙子,使天平平衡即求ax + by = c 的解若x ,y 为负,表示与沙子原创 2017-04-20 14:37:24 · 1246 阅读 · 0 评论 -
lucas定理(hdu3037,)
这几天脑袋秀逗了,想什么都想不出来,上课状态也特别差,老是犯困,看来最近状态不是一般的差,以后不熬夜了,注意作息,调整状态好好学习了。用心看了下lucas定理,就整理下来吧。Lucas定理定义:A、B是非负整数,p是质数。AB写成p进制:A=a[n]a[n-1]...a[0],B=b[n]b[n-1]...b[0]。则组合数C(A,B)与C(a[n],b[n])*C原创 2017-05-11 16:46:32 · 511 阅读 · 0 评论 -
hdu5391Zball in Tina Town(素数鉴别的大猜想)
题目:点击打开链接思路:balabala一大堆,其实本意就是考你威尔逊定理,关于威尔逊定理如果p为素数,则(p-1)! mod p = p-1;如果p为合数,则(p-1)! mod p = 0;当p等于4时除外,当p=4时,答案为2而不是0;所以这个题就符合上边所说的定理,唯一的cheak就是p=4时。解题:那么既然知道了是判断素数的问题,那么就好做了,但是判断素数的方法有这么原创 2017-05-03 16:54:15 · 495 阅读 · 0 评论 -
Miller-Rabin素数测试
定理一:假如p是质数,且(a,p)=1,那么a^(p-1)≡1(mod p)。即假如p是质数,且a,p互质,那么a的(p-1)次方除以p的余数恒等于1。(费马小定理)就是一个随机数算法,需要用到快速幂计算。哇,明天再整理。原创 2017-05-01 20:48:50 · 623 阅读 · 0 评论 -
hdu1576 A/B(求逆元模板)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1576题解:让你求A/B其实就是让你求A*1/B即让你求解B的逆元则题目就迎刃而解。普及下逆元的知识:逆元:使得ax≡1(mod n)一个数有逆元的充分必要条件是gcd(a,n)=1,此时逆元唯一存在 (个人理解)解逆元思路:给定模数m,求a的逆相当于求解ax=1(mod m)这个方原创 2017-04-20 18:11:00 · 685 阅读 · 0 评论 -
费马小定理求逆元
费马曾经说过:费马小定理a^(p-1) ≡1 (mod p)两边同除以aa^(p-2) ≡1/a (mod p)应该写a^(p-2) ≡ inv(a) (mod p) 所以inv(a) = a^(p-2) (mod p)这个用快速幂求一下,复杂度O(logn)代码:LL pow_mod(LL a, LL b, LL p){//a的b次方求余p原创 2017-05-04 09:42:22 · 1081 阅读 · 0 评论 -
hdu1452Happy 2004(乘性函数+费马小定理+求逆元)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1452题意:让你求2004^x次方的因子的个数。思路:首先,先要想到求解正整数正因数和的公式!!!分解为素数。然后套那个该死的公式,先把分子算出来。 接下来,看到mod29要敏感,29为素数,那么他就会满足费马小定理a^(p-1) mod p = 1( (a*b)%x==(a%x*b%x)%原创 2017-05-06 14:13:14 · 566 阅读 · 0 评论 -
hdu4549 M斐波那契数列 (矩阵快速幂+费马小定理)
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=4549题目大意:已知a,b,n,接下来求解第n项的值。题目思路:已知a和b的指数是按照斐波那契数列的顺序进行递增的,所以只要求出a,b的指数即可。费马小定理:如果p为质数且a,p互质 a^(p-1) = 1(mod p)所以 a^n = a原创 2017-10-14 11:44:14 · 389 阅读 · 0 评论
分享