数论入门整理(updating)
一、gcd lcm
基础中的基础,一般用来处理计算第一步什么的,分数化简之类。
LL gcd(LL a, LL b)
{ return b ? gcd(b, a % b) : a;
}
<pre name="code" class="cpp">LL lcm(LL a, LL b)
{LL c = gcd(a, b);return a / c * b;
}
例题:
hrbust 1178
hdu 2028 Lowest Common Multiple Plus
二、exgcd
通常用于解二元一次方程,线性同余方程组,高次同余方程组(babystep_giantstep)。
中国剩余定理。
void exgcd(LL a, LL b, LL& d, LL& x, LL& y)//ax + by = d, d = gcd(a, b)
{ if (b == 0) { d = a; x = 1; y = 0; } else { exgcd(b, a % b, d, y, x); y -= x * (a / b); }
}
例题:
二元一次方程:
poj 1061 + poj 2115 + poj 2142
uva 10673 Play with Floor and Ceil
线性同余方程组:
poj 2891 Strange Way to Express Integers
hdu 1573
高次同余方程组:
poj 3243 poj 2417 hdu 2815
中国剩余定理:
poj 1006 Biorhythms
三、素数
也是第一步的处理。
例题:
hdu 2098 分拆素数和
poj 2689 Prime Distance 大素数
poj 1811 + poj 2429 (Miller_Rabin大素数测试 + Pollard_Rho大合数分解)
hdu 3292 No more tricks, Mr Nanguo(矩阵快速幂解佩尔方程)
小于一个数x且与x互素的数的个数,就是欧拉函数,保存在phi[x]中。
void phi_table()
{ for (int i = 2; i <= maxn; i++) phi[i] = 0; phi[1] = 1; for (int i = 2; i <= maxn; i++) { if (!phi[i]) { for (int j = i; j <= maxn; j += i) { if (!phi[j]) { phi[j] = j; } phi[j] = phi[j] / i * (i - 1); } } }
}
int euler_phi(int n)
{ int m = sqrt(n + 0.5); int res = n; for (int i = 2; i <= m; i++) { if (n % i == 0) { res = res / i * (i - 1); while (n % i == 0) n /= i; } } if (1 < n) res = res / n * (n - 1); return res;
}
例题:
基础:
uva 10820 poj 2407 poj 1284 poj 2478 poj 3090
进阶:
poj 3696 + poj 3358
六、因子相关
因子和,因子个数和,积性函数。
例题:
uva 10791 Minimum Sum LCM(拆分素因子)
poj 1845 (因子和)
poj 2992 (因子个数和)
hdu 1452 (积性函数+因子和+乘法逆元)
poj 2480 (积性函数+素因子和)
七、fib与catalan
catalan:
h(n) = (4 * n - 2) / (n + 1) * h(n - 1)
经典的总结:http://www.cnblogs.com/wuyuegb2312/p/3016878.html
例题:
hdu 1023 Train Problem II
uva 10303 uva 991
fib:
通常的fib直接打个表或者乱搞一下。
但是fib有个扩展就是fib的矩阵形式,在要求fib比较大的情况下,直接用矩阵快速幂搞定。
⎡⎣⎢100111110⎤⎦⎥⎡⎣⎢Sn−1Fn−1Fn−2⎤⎦⎥=⎡⎣⎢SnFnFn−1⎤⎦⎥
例题:
uva 10229 (fib矩阵形式+矩阵快速幂)uva 10518 (fib(n)调用多少次)
八、概率论、组合数学
排列组合,贝叶斯公式、全概率公式。
例题:
uva 10105 uva 10910 uva 10943(排列组合C)
hdu 2048 and 2049(错排问题)
uva 19759 (Dp+概率)
uva 10900 (期望)
uva 10056(等比数列求和)
uva 11181(贝叶斯公式)
uva 10277 (概率论 + 暴力)
uva 10169 (概率+取小数点后0的位数)
九、java大数使用
uva 10183 uva 10519 uva 10516
十、数学问题+技巧
uva 10061 How many zero's and how many digits ?(不同进制阶乘末尾几个0)+poj 1401
uva 11121 Base -2 (负进制计算)
uva 128 Software CRC(进制转换)
uva 106 Fermat vs. Pythagoras(勾股数求法)
uva 11029 Leading and Trailing(求n^k的前几位和后几位 证明)
poj 1091 跳蚤(n元一次不定方程+斥容原理)
uva 11027(康拓展开求序列|编码解码)
uva 10491 (广义三门问题)
poj 1695 (莫比乌斯反演)
十一、组合数学学习
1.排列组合:
Type | Sample | Order Counts? | Rep? | Numbers of ways |
无重组合 | 从n个球中取r个 | No | No | C(n,r) |
无重排列 | 从n个人中找r个排队 | Yes | No | P(n,r) |
可重组合 | 从n种水果中选r个拼果篮 | No | Yes | C(n + r - 1, r) |
可重排列 | n个字母组成的r位串 | Yes | Yes | n ^ r |
多重全排列 | r1个a,r2个b组成的n位串 | Yes | Yes | n! / (r1! r2!) |
数论入门整理(updating)相关推荐
- 【小组专题一:数论入门:整数】数和序列 | 和与积 | 数学归纳与第二数学归纳
数论入门:整数 [1.1 数和序列] 练习中的证明: [1.2 和与积] 课后练习: [1.3 数学归纳法] 课后练习(都用数学归纳或者第二数学归纳证明): ·|· 根据<初等数论及其应用> ...
- 和与余数的和同余理解_5 同余 ——数论入门知识讲解系列
数学竞赛 数论是纯粹数学的分支之一,主要研究整数的性质,按研究方法分为初等数论和高等数论.中学生(甚至小学生)课外数学兴趣小组的许多内容是属于初等数论的,各级别数学竞赛也会把初等数论作为重点内容进行考 ...
- matlab狄利克雷函数,数论入门1——莫比乌斯函数,欧拉函数,狄利克雷卷积,线性筛,莫比乌斯反演,杜教筛...
数论入门1 一个菜鸡对数论的一点点理解... 莫比乌斯函数 定义函数$\mu(n)$为: 当n有平方因子时,$\mu(n)=0$. 当n没有平方因子时,$\mu(n)=(-1)^{\omega(n)} ...
- 一个完整的区块链入门整理,良心推荐
一个完整的区块链入门整理,良心推荐!!! 入门介绍与原理: 一.比特币 1.比特币白皮书 –来自百度网盘超级会员V8的分享 这是一切的开始 2.精通比特币 提取码:mj86 讲比特币很详细的一本书,看 ...
- ax在c语言中意思啊,【数论】整理关于ax+by=c
整理关于 \(\rm{ax+by=c}\),遇到的一系列 在这里,\(x\) ,\(y\) 是变量,\(a,\;b,\;c\) 是常量 前置: 对于二元一次不定方程 \(ax+by=c\),有整数解的 ...
- 8、JDBC入门整理
JDBC入门 l 导jar包:驱动! l 加载驱动类:Class.forName("类名"); l 给出url.username.password, l 使用DriverM ...
- Ubuntu+Pytorch开发入门整理——环境搭建
最近在使用Ubuntu开发,但是在配置环境中的时候发现的确会有一些坑,比如nVidia的驱动,现在做一些资料整理. 安装方面,使用的是unetbootin制作的U盘,在电脑上进行安装,安装时候值得注意 ...
- 深度学习入门整理学习(二)
深度学习入门 深度学习横跨矩阵论.概率论与数理统计.信息论.博弈论.最优化等理论,并融合机器学习.数据挖掘.大数据.人工智能等领域技术,是具有深度和广度的综合范例 数学基础 矩阵论 (1)正交矩阵 A ...
- 数论入门之青蛙的约会poj1061
青蛙的约会POJ1061 前言 一.什么是扩展欧几里得? 1.欧几里得模板 2.扩展欧几里得模板 二.扩展欧几里得的简要证明 三.题解 四.题解代码 题意: 两只青蛙在网上相识了,它们聊得很开心,于是 ...
- 网络安全-数论入门-孙子定理(CRT)
1. 简介 孙子定理是中国古代求解一次同余式组(见同余)的方法.是数论中一个重要定理.又称中国余数定理.一元线性同余方程组问题最早可见于中国南北朝时期(公元5世纪)的数学著作<孙子算经>卷 ...
最新文章
- 思科ssh验证方式_SSH的应用:一个实例两种验证模式的实现
- sentinel 官方文档_Sentinel控制台监控数据持久化到MySQL数据库
- openSAP中国新平台的介绍
- Winform中设置Dialog的显示位置居中
- 虚拟主机创建虚拟lan_创建虚拟背景应用
- leetcode 330. 按要求补齐数组(贪心算法)
- 如何修改emcp的sn号_百家号领域选择错误怎么办?百家号怎么更改领域?
- 帝国CMS二次元COS漫展信息分享网站模板
- #333. 【NOIP2017】宝藏
- 三个基于WebRTC开源MCU框架的横向对比
- svg 编辑器的点击事件兼容pc端和移动端方案
- unity中eulerAngles和rotation的区别
- 机器学习--西瓜书思维导图
- 解决 filezilla 连接服务器失败问题
- Presto常用语句整理
- win7台式计算机怎么连热点,win7热点怎么设置 win7热点设置的具体方法介绍
- 使用Aruino Ethernet使ESP32具有以太网通讯能力
- PDF文件怎么转PPT格式?不会的小伙伴快看过来
- FFplay文档解读-5-编解码器选项二
- 强推Windows资源管理器软件Clover,类似谷歌 Chrome 浏览器的多标签页
热门文章
- MyEclipse中SVN分支合并到主干
- 计算机简历如何写,简历计算机能力怎么写
- RTSP/GB28181/SDK/EHOME协议视频智能分析共享平台EasyCVR安防视频云服务新增智能人脸识别功能
- 20个Python实战项目(附源码),拿走就用。
- nodejs 下载最新版本
- 记录08_7.15~7.16
- 解决eeglab无法读取.mat文件(读取mat文件报错cannot read .mat file,eeglab error in function pop_editset()at line 445)
- JAVAweb之SSH框架
- 神州数码DCN交换机SNMP配置命令
- 永磁同步电机矢量控制(二)——控制原理与坐标变换推导