数论入门整理(updating)

2024-09-09 16:38
文章标签 入门 整理 数论 updating

本文主要是介绍数论入门整理(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大合数分解)


四、快速幂

普通快速幂和矩阵快速幂。

用于求比较大的数的幂次取模。

比较大小可以取对数。

例题:

快速幂:

uva 10006 Carmichael Numbers 

poj 1995 


矩阵快速幂:

poj 3233(矩阵快速幂)

hdu 3292 No more tricks, Mr Nanguo(矩阵快速幂解佩尔方程)


五、欧拉函数

小于一个数x且与x互素的数的个数,就是欧拉函数,保存在phi[x]中。

1.打表:

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);  }  }  }  
}  
2.O(n)解法:

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比较大的情况下,直接用矩阵快速幂搞定。

        100111110Sn1Fn1Fn2=SnFnFn1


例题:

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.排列组合:

TypeSampleOrder Counts?Rep?Numbers of ways
无重组合从n个球中取r个NoNoC(n,r)
无重排列从n个人中找r个排队YesNoP(n,r)
可重组合从n种水果中选r个拼果篮NoYesC(n + r - 1, r)
可重排列n个字母组成的r位串YesYesn ^ r
多重全排列r1个a,r2个b组成的n位串YesYesn! / (r1! r2!)



这篇关于数论入门整理(updating)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1151700

相关文章

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

从入门到精通详解LangChain加载HTML内容的全攻略

《从入门到精通详解LangChain加载HTML内容的全攻略》这篇文章主要为大家详细介绍了如何用LangChain优雅地处理HTML内容,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录引言:当大语言模型遇见html一、HTML加载器为什么需要专门的HTML加载器核心加载器对比表二

从入门到进阶讲解Python自动化Playwright实战指南

《从入门到进阶讲解Python自动化Playwright实战指南》Playwright是针对Python语言的纯自动化工具,它可以通过单个API自动执行Chromium,Firefox和WebKit... 目录Playwright 简介核心优势安装步骤观点与案例结合Playwright 核心功能从零开始学习

Python自动化批量重命名与整理文件系统

《Python自动化批量重命名与整理文件系统》这篇文章主要为大家详细介绍了如何使用Python实现一个强大的文件批量重命名与整理工具,帮助开发者自动化这一繁琐过程,有需要的小伙伴可以了解下... 目录简介环境准备项目功能概述代码详细解析1. 导入必要的库2. 配置参数设置3. 创建日志系统4. 安全文件名处

MySQL 迁移至 Doris 最佳实践方案(最新整理)

《MySQL迁移至Doris最佳实践方案(最新整理)》本文将深入剖析三种经过实践验证的MySQL迁移至Doris的最佳方案,涵盖全量迁移、增量同步、混合迁移以及基于CDC(ChangeData... 目录一、China编程JDBC Catalog 联邦查询方案(适合跨库实时查询)1. 方案概述2. 环境要求3.

SpringSecurity整合redission序列化问题小结(最新整理)

《SpringSecurity整合redission序列化问题小结(最新整理)》文章详解SpringSecurity整合Redisson时的序列化问题,指出需排除官方Jackson依赖,通过自定义反序... 目录1. 前言2. Redission配置2.1 RedissonProperties2.2 Red

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

Javaee多线程之进程和线程之间的区别和联系(最新整理)

《Javaee多线程之进程和线程之间的区别和联系(最新整理)》进程是资源分配单位,线程是调度执行单位,共享资源更高效,创建线程五种方式:继承Thread、Runnable接口、匿名类、lambda,r... 目录进程和线程进程线程进程和线程的区别创建线程的五种写法继承Thread,重写run实现Runnab

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语