【学习整理】NOIP涉及的数论 [updating]
扩展欧几里得
求二元一次不定式方程 的一组解。
int exgcd(int a,int b,int &x,int &y)
{
int t;
if(!b) {x=1;y=0;return a;}
t=exgcd(b,a%b,y,x);
y-=(a/b)*x;
return t;
}
线性筛质数
维护一个质数表。对于每个数 , 从小到大枚举所有质数
,将
打上标记。 如果
, 停止枚举。
void getprime()
{
int i,j;
for(i=2;i<=n;i++)
{
if(!b[i]) prime[++tot]=i;
for(j=1;j<=tot&&i*prime[j]<=n;j++)
{
b[i*prime[j]]=true;
if(!i%prime[j]) break;
}
}
}
线性求逆元
逆元的定义:称x是a在模b意义下的逆元,可理解为
。
给定一个质数 ,求出
至
的逆元。
证明:
费马小定理
若 是质数, 则
证明:
因为 , 所以
.
线性求欧拉函数
欧拉函数的定义:小于等于
的正整数中与
互质的数的个数。
设 为
最小的质数,
。在线性筛中,
被筛
掉。
当时,
。
当时,
。
void getphi()
{
int i,j;
phi[1]=1;
for(i=2;i<=n;i++)
{
if(!b[i])
{
prime[++tot]=i;
phi[i]=i-1;
}
for(j=1;j<=tot;j++)
{
if(i*prime[j]>n) break;
b[i*prime[j]]=true;
if(i%prime[j]==0)
{
phi[i*prime[j]]=phi[i]*prime[j];
break;
}
else phi[i*prime[j]]=phi[i]*(prime[j]-1);
}
}
}
欧拉定理
若 , 则
。
证明:
记 , 记
为
到
中与
互质的数。
由 消去律 得
Miller-Rabin算法 素数测试
记
在 中随机选取一个整数
, 如果
或
, 那么我们认为n是质数。
错误率不超过1/4,重复若干次即可。
long long mod_mul(long long,long long,long long);
long long mod_exp(long long,long long,long long);
bool miller_rabbin(long long n)
{
int i,j,t;
long long a,x,y,u;
if(n==2)return true;
if(n<2||!(n&1)) return false;
t=0;u=n-1;
while((u&1)==0) t++,u>>=1;
for(i=1;i<=tim;i++)
{
a=rand()%(n-1)+1;
x=mod_exp(a,u,n);
for(j=0;j<t;j++)
{
y=mod_mul(x,x,n);
if(y==1&&x!=1&&x!=n-1) return false;
x=y;
}
if(x!=1) return false;
}
return true;
}
long long mod_mul(long long a,long long b,long long mod)
{
long long res=0;
while(b)
{
if(b&1) res=(res+a)%mod;
a=(a+a)%mod;
b>>=1;
}
return res;
}
long long mod_exp(long long a,long long b,long long mod)
{
long long res=1;
while(b)
{
if(b&1) res=mod_mul(res,a,mod);
a=mod_mul(a,a,mod);
b>>=1;
}
return res;
}
Pollard-rho算法 分解合数
中国剩余定理
解方程组 其中
两两互质。
大步小步法(BSGS)及其拓展
求最小的 使得
,
为质数。
莫比乌斯反演
已知 求
。
原根的基本性质
拉格朗日定理
二次剩余
【学习整理】NOIP涉及的数论 [updating]的更多相关文章
- HttpClient学习整理
HttpClient简介HttpClient 功能介绍 1. 读取网页(HTTP/HTTPS)内容 2.使用POST方式提交数据(httpClient3) 3. 处理页面重定向 ...
- JavaScript学习整理(转载)
JavaScript的学习整理(一) 目录: 1.换皮肤功能2.显示/隐藏(点击切换)3.显示/隐藏(onmouseover/onmouseout)4.选项卡5.全选/不选/反选(checkbox)6 ...
- js数组学习整理
原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...
- TweenMax学习整理--特有属性
TweenMax学习整理--特有属性 构造函数:TweenMax(target:Object, duration:Number, vars:Object) target:Object -- 需要缓 ...
- !!对python列表学习整理列表及数组详细介绍
1.Python的数组分三种类型:(详细见 http://blog.sina.com.cn/s/blog_6b783cbd0100q2ba.html) (1) list 普通的链表,初始化后可以通过特 ...
- Java设计模式(学习整理)---命令模式
设计模式之Command(学习整理) 1.Command定义 不少Command模式的代码都是针对图形界面的,它实际就是菜单命令,我们在一个下拉菜单选择一个命令时,然后会执行一些动作. 将这些命令封装 ...
- Wix学习整理(5)——安装时填写注册表
原文:Wix学习整理(5)--安装时填写注册表 一 Microsoft操作系统的注册表 什么是注册表? 注册表是Mircrosoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信 ...
- Wix学习整理(6)——安装快捷方式
原文:Wix学习整理(6)--安装快捷方式 一 为HelloWorld案例添加安装快捷方式 通常我们安装一个应用软件的时候,都喜欢在桌面或开始菜单中添加快捷方式以便我们快速访问.现在我们就在上篇添加注 ...
- Wix学习整理(7)——在开始菜单中为HelloWorld添加卸载快捷方式
原文:Wix学习整理(7)--在开始菜单中为HelloWorld添加卸载快捷方式 通过前面的几篇随笔,我们已经给我们的HelloWorld提供了填写注册表信息,以及开始菜单快捷方式和桌面快捷方式.这些 ...
随机推荐
- WebService SendTimeout 超时问题
System.TimeoutException: 请求通道在等待 00:01:00 以后答复时超时.增加传递给请求调用的超时值,或者增加绑定上的 SendTimeout 值.分配给此操作的时间可能是更 ...
- HighCharts官网更新了!(忠实粉的小声音)
之前用HighCharts做统计分析,用到的大部分都是柱状图和饼图,可是在HighCharts主页却摆着一个曲线图的实例,虽然从曲线图上的标记可以找到对应的API项,但是总是可能有对应不上柱状图的时候 ...
- 游戏服务器ID生成器组件
游戏服务器程序中,经常需要生成全局的唯一ID号,这个功能很常用,本文将介绍一种通用ID生成组件.游戏服务器程序中使用此组件的场景有: 创建角色时,为其分配唯一ID 创建物品时,每个物品需要唯一ID 创 ...
- javascript 无语的==
今天面试不小心掉进坑了,大公司特别喜欢考javascript,而且专门挑很tricky的case. javascipt的==简直就是黑魔法,以前偷懒总是用,感觉也没有问题,可是准备面试就需要有寻根问底 ...
- Microsoft 2013 新技术学习笔记 一
有几年没有关注技术了,最近有点时间想把技术重新捡起来,借着重构手上的一个后台管理框架的机会将微软新的几种技术全部应用一下,从目的上来讲并没有希望能对涉及的技术有很深入的了解,所以这个系列的文章(篇幅不 ...
- Linux发行版大全
基于Debian Adamantix:基于Debian,特别关注安全. Amber Linux:基于Debian,针对拉脱维亚用户作了一些定制. ASLinux Desktop:西班牙语,基于D ...
- UIView的响应链
父视图 和子视图的关联 只有当父视图 userInteractionEnabled=YES; 是其子视图才可响应 userInteractionEnabled=NO代表不接受响应 UIView的默认 ...
- 转:C/C++内存管理详解 堆 栈
http://chenqx.github.io/2014/09/25/Cpp-Memory-Management/ 内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了 ...
- 未能找到类型或命名空间名称“Coco”(是否缺少 using 指令或程序集引用)
未能找到类型或命名空间名称"Coco"(是否缺少 using 指令或程序集引用),如果你确实引用了,那说明你引用的和你的项目环境版本不一样,.NET framework的问题,修改 ...
- Mybatis对MySQL中BLOB字段的读取
1.在sqlMapConfig中,定义一个typeHandlers <typeHandlers> <typeHandler jdbcType="BLOB" jav ...