
数论
SimpleLifeT_T
github账号:lihongqiang
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
中国剩余定理与逆元的求法与应用
1.求逆元的方法(1)费马小定理:(a,p)=1,p为质数,则a^p=1modp,即a^(p-1)是p的逆元。(2)欧拉函数:a^q(m)=1modm,即a^(q(m)-1)是a的逆元。欧拉函数定义:小于x且与x互质的数的个数,从1开始。q(x)=x*(1-1/p1)*(1-1/p2)...pi是x的质因数,且互不相同。(3)欧几里得扩展:a*a'=1modm,a*a'-1=k原创 2013-07-20 19:41:44 · 2516 阅读 · 0 评论 -
欧几里得算法应用汇总
//求最大公约数gcd(a,b)int gcd(int a,int b){ return !b?a:gcd(b,a%b);}//最小公倍数lcm(a,b)int lcm(int a,int b){ return a*b/gcd(a,b);}//扩展欧几里得算法:求线性方程ax+by=gcd(a,b)int ex_gcd(int a,int b,int& x,int原创 2013-07-20 16:49:45 · 908 阅读 · 0 评论 -
利用stl求夹角
夹角反正切值:atan2(x,y)其中x,y为点的横坐标和纵坐标,则该函数返回的是x轴与改点与源点的射线所形成的夹角。比如atan2(1,1)=pi/4;具体还是看百科:返回给定的 X 及 Y 坐标值的反正切值。反正切的角度值等于 X 轴正方向与通过原点和给定坐标点 (Y坐标, X坐标) 的射线之间的夹角。结果以弧度表示并介于 -pi 到 pi 之间(不包括 -pi)。原创 2013-08-23 14:44:10 · 907 阅读 · 0 评论 -
LA5009三分
三分的模版题吧,不过得注意函数是什么,别搞错了。三分的思想就是每次压缩区间吧,所以修改的是最外边的值。一般用来求极值。代码:#include#include#include#include#include#include#define maxn 10005#define INF 0xfffffff#define mem(a,b) memset(a,b,sizeof(a))原创 2013-08-23 11:56:29 · 662 阅读 · 0 评论 -
Uva10341 水二分 卡精度
二分的题,不过精度卡的要死,最后执行了100次循环才过。。。TT以后二分如果卡精度,就果断不用while判断了,还有就是判断方程无解的时候,考虑可能为0的情况。代码:#include#include#include#include#include#include#include#define maxn 10005#define INF 0xfffffff#define原创 2013-08-22 22:33:42 · 689 阅读 · 0 评论 -
Uva11542 求矩阵的秩
只要所取的每个数的质数因子的幂是偶数,答案就是平方数,这题可以转化为XOR方程,即模2的剩余系。然后求自由变量的个数,因为每个自由变量可以取0,1,即两种情况,但不能都不取,所以答案为2^(n-r)-1,r为方程系数矩阵的秩,n-r为自由变量的个数。第一次接触矩阵的秩的写法,WA了好多发~~~其实矩阵的秩和高斯消元法差不多,找不为首数字不为0的行,然后替换第一行,然后将下面所有的行首数字变原创 2013-08-22 20:36:46 · 1399 阅读 · 0 评论 -
hdu4704 循环节+快速幂
求循环节的方法:void getj(){ ll a1=2,a2=4; for(ll i=2;;i++) { a1=(2*a1)%Mod; a2=(2*a2)%Mod; if(a1==2&&a2==4) { cout<<i-1<<endl; break;原创 2013-08-22 19:15:52 · 884 阅读 · 0 评论 -
Uva11774 找规律
找规律的一般都是打表,然后看有什么相同点吧。这题由于模拟的时候,复杂度比较高,只模拟了(1,1)-(8,8)的数据,然后想了一种可以过所有数据的方法,不过最后还是老WA。原来这种题还是有一些比较实际点的规律的,比如公约数,公倍数什么的。开来表还是得打大点呀。规律:ans=(m+n)/(gcd(m,n);代码就不发了,太水了,这也是一次尝试吧,总结下。原创 2013-08-21 20:59:31 · 751 阅读 · 0 评论 -
Uva10601 立方体 置换
这题的置换集合有很多,得慢慢找。。。代码:#include#include#include#include#include#include#define maxn 15#define INF 0xfffffff#define mem(a,b) memset(a,b,sizeof(a))#define FOR(i,s,t) for(int i=s;i<=t;i++)#de原创 2013-08-20 22:45:28 · 744 阅读 · 0 评论 -
hdu4596 判断一阶不定方程有解性问题
这题分两种情况:1.如果存在两个区间重叠,一定满足条件。2.如果不存在两个区间重叠,那么id%x1=a,id%x2=b,a,b分别在[y1,z1],和[y2,z2]这两个区间内。id=x1*s+a=x2*t+b;x1*s+x2*t=a-b;所以只要判断这个方程有解即可。gcd(x1,x2)=x1*s+x2*t;只要(a-b)%gcd(x1,x2)==0即可,求出(a-b原创 2013-08-17 22:05:16 · 1254 阅读 · 0 评论