自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(137)
  • 收藏
  • 关注

原创 勾股数的性质和应用

能够作直角三角形三条边的边长的三个正整数,成为一组勾股数,勾股数也称商高数或毕达哥拉斯三元组。能被222整除的数称为偶数,反之则为奇数,既是奇数又是素数的数称为奇素数,既是偶数又是素数的数称为偶素数。偶素数只有一个222。

2025-05-28 16:22:07 1006

原创 多元一次不定方程

形如a1x1a2x2⋯anxnNa1​x1​a2​x2​⋯an​xn​N的方程称为多元一次不定方程,其中a1a2anN∈Zn≥2a1​a2​an​N∈Zn≥2并且a1a2ana1​a2​an​都不为零。我们研究的时候研究a1a2ana1​a2​an​都大于零的情况,可以通过变量替换转换成这个形式,也方便我们写代码。

2025-05-27 20:42:10 559

原创 二元一次不定方程

不定方程是指具有多个未知数的方程组,其中未知数的个数比方程的数量多,或者方程本身无法唯一确定所有未知数的值。这类方程通常有无限多解,或者存在解的集合。常见的不定方程有线性不定方程和非线性不定方程。举个例子,线性不定方程可以是像这样的形式:ax+by=cax+by=cax+by=c其中a,b,ca,b,ca,b,c是已知常数,而xxx和yyy是未知数。这个方程本身可能有多个解,或者没有解,具体情况取决于a,b,ca,b,ca,b,c的值。一个经典的不定方程的例子是:x+y=10x+y=10x+y=10这是一个

2025-05-26 16:48:46 851

原创 函数[x]和{x}在数论中的应用

设x∈Rx∈R,定义x[x]x等于不超过xxx的最大整数,称函数x[x]x为取整函数或高斯函数。另外也称x[x]x为xxx的整数部分xx−xxx−x为xxx的小数部分。

2025-05-25 20:08:39 694

原创 动态规划dp

题意:(最长括号匹配)给一个只包含‘(’,‘)’,‘[’,‘]’的非空字符串,“()”和“[]”是匹配的,寻找字符串中最长的括号匹配的子串,若有两串长度相同,输出靠前的一串。,因为字符串中的每个字符不会对后面的结果产生影响,所以 DP 方程可以优化成一维的, 由于字符串中有重复的字符,所以比较时应该从后往前。物品选不选,可以选的话,去下一组选下一个,否则在这组继续寻找可以选的物品,当这组遍历完后,去下一组寻找。表示寻找的字符串的第几个字符,当字符串中的字符和文章中的字符相同时,即找到符合条件的字符,

2025-05-24 21:35:02 806

原创 质数和算术基本定理

设ppp是一个大于111的整数,若它的正因数只有111和它本身,则称ppp是一个质数(或者素数),否则称为合数。这里要说明的是111既不是素数也不是合数。见下面的注解1。形如Fm22m1m012Fm​22m1m012的数称为费马数。可以知道F0F1F2F3F4F0​F1​F2​F3​F4​都是素数,但是后来欧拉发现了F522514294967296641×6700417。

2025-05-22 16:10:53 794

原创 整除的进一步性质与最小公倍数

若eee是所有a1a2ana1​a2​an​的倍数,则称eee为a1a2ana1​a2​an​的公倍数,在所有公倍数中的最小正数叫做a1a2ana1​a2​an​的最小公倍数,记为a1a2ana1​a2​an​或者lcma1a2anlcma1​a2​an​。设n∈Za0a1a2an∈R或某一数域。

2025-05-21 18:46:33 807

原创 最大公因数和辗转相除法

计算下列各组数的最大公因数上面这个是求aaa和bbb的最大公因数的c语言递归代码我们根据这个代码来模拟一下111剩余两个问是类似的,这里就不解了。先给出因数的定义:如果整数aaa除以整数b(b≠0)b(b\ne 0)b(b=0)所得的商是整数且余数为0,那么我们就称bbb是aaa的因数(或约数)。设整数 a1,a2,…,ana_1, a_2, \dots, a_na1​,a2​,…,an​ 是 n(n≥2)n(n \ge 2)n(n≥2) 个整数, 如果整数 ddd 是它们中每一个的因数, 则称 dd

2025-05-21 13:04:18 836

原创 整数的定义和带余除法

设ab∈Zab∈Z, 且b≠0b \ne 0b0。若存在q∈Zq∈Z, 有aqba = qbaqb, 则称bbb是aaa的因数 (或约数), 或aaa是bbb的倍数, 或bbb能整除aaa, 或aaa能被bbb整除, 记作b∣ab \mid ab∣a。若对任意的q∈Zq∈Z, 有a≠qba \ne qbaqb, 则称aaa不能被bbb整除, 记作b∤a。

2025-05-18 14:15:15 617

原创 欧拉计划 Project Euler 73(分数有范围计数)题解

这个题按照范围来说是可以暴力解决的,还有莫反也可以解决,这涉及到Farey序列,也可以用Stern-Brocot树解决。这里给出暴力的解法。且其最大公约数为1,则称该分数为最简真分数。的最简真分数构成的集合中排序后,在。

2025-05-15 17:02:06 771

原创 欧拉计划 Project Euler 72(分数计数)题解

是欧拉函数,欧拉函数前面几个题已经详细介绍过了。且其最大公约数为1,则称该分数为最简真分数。的最简真分数构成的集合中共有多少个元素?可以看出该集合中有21个元素。我们可以使用欧拉筛预处理所有的。,最简真分数的个数是。因此要求的元素个数为。

2025-05-14 13:11:27 784

原创 欧拉计划 Project Euler 71(有序分数)题解

很显然这是不能暴力构造的,因为数据太过庞大了。且其最大公约数为1,则称该分数为最简真分数。的最简真分数按大小升序排列,求此时。是否互质,维护目前最大的。直接左邻的分数的分子。

2025-05-13 16:08:49 777

原创 欧拉计划 Project Euler 70(欧拉总计函数与重排)题解

尽可能的小, 意味着选择较小的素数乘积。互质的正整数的数量记为欧拉总计函数。在上一题69题中,我们分析得到了。是n的一个重排,求这些取值中使。尽可能的小,应该尽可能的选择。和任意正整数互质,所以。

2025-05-12 14:09:41 680

原创 欧拉计划 Project Euler 69(欧拉总计函数与最大值)题解

的数,如果包含更大的素因数或者素因数的幂次(这不会改变。其实根据上诉的思路不需要code了,但是还是给一下把。最大化,我们需要让这个乘积最大化,注意到每一项。为最小的若干连续素数的乘积,并且这个乘积不超过。只依赖于不同的素因数),或者包含的因数更少,其。这种数被称为素连乘数(primorial)。可以用筛法先筛选一些素数,当然也可以直接打表。,我们需要理解欧拉函数的性质以及表达式。互质的正整数的数量记为欧拉总计函数。让我们来计算一下这些素连乘数。且与n互质的正整数的个数。所以我们能取到的最大的数是。

2025-05-10 16:43:32 931

原创 欧拉计划 Project Euler 68(魔力五边形环)题解

为了获得最大的 16 位数字串,10 必须是外侧节点之一。为了使起始数字(最小外侧节点)最大,外侧节点集合必须包含尽可能大的数字,同时包含 10。最大的这种集合是 {6, 7, 8, 9, 10},此时最小外侧节点为 6,内侧节点为 {1, 2, 3, 4, 5},每条线总和为 14。在此基础上,从外侧节点 6 开始,通过贪婪选择后续数字,可以构建出最大的 16 位数字串。在如下的“魔力”五边形环中,在其中填入1至10这10个数,根据不同的填写方式,可以组成16位或17位数字串。

2025-05-08 15:08:06 814

原创 欧拉计划 Project Euler66(丢番图方程)题解

而对于非平方数的正整数D,佩尔方程总存在无穷多组正整数解。有了上面的结论,代码就很好写了,和之前的连分数代码差不多,具体细节看代码实现。鉴于数据量比较大,数据很容易溢出,这里用的python。的连分数展开是无限且最终是周期性的。是完全平方数时,这个方程没有正整数解。所以其他的解都可以由基本解生成。),连分数展开的周期就开始了,周期长度。是平方数时,这个方程不存在正整数解。找到佩尔方程基本解的标准方法是利用。是完全平方数时,方程变为。对于一个非平方数的正整数。是指周期部分的长度,且。

2025-05-07 15:11:48 892

原创 欧拉计划 Project Euler65(e的有理逼近)题解

有了以上思路后不难写出代码,如果使用c++编程要记得模拟大数加法和乘法,不然会溢出,使用python则不需要。可以证明,截取算术平方根连分数表示的一部分所组成的序列,给出了一系列最佳有理逼近值。初始条件为(因为从0开始算,所以这边有负数但实际编程的时候是不需要的)2的算术平方根可以写成无限连分数的形式。的第100个逼近值的分子各位数字之和。最令人惊讶的莫过于重要的数学常数。个逼近值的分子各位数字之和为。我们可以带几个值进去验证一下。可以通过以下递推式进行计算。这个无限连分数可以简记为。

2025-05-06 21:15:10 920

原创 欧拉计划 Project Euler64(奇周期平方根)题解

不是完全平方数的情况,因为完全平方数的平方根是整数(有理数),其连分数表示是有限的,没有周期。的连分数表示的周期长度是奇数。可以看出序列正在重复。中,有多少个连分数表示的周期是奇数?个连分数表示的周期是奇数。的范围内,有多少个整数。

2025-05-03 17:20:28 867

原创 欧拉计划 Project Euler63(幂次与位数)题解

注意这个是十进制下的,如果一个正整数。,使得它的十进制位数恰好等于。,位数可以通过对数来判断。范围内检查是否满足条件。

2025-05-02 12:10:14 857

原创 欧拉计划 Project Euler62(立方数重排)题解

41063625的标准形式是 ‘01234566’。然后我们维护一个字典 dict[标准形式] = [a^3 值列表],每次生成一个立方数 将其标准形式作为键,加入到对应列表中。当某个标准形式对应的立方数个数正好为 5 时,记录它们中最小的那个作为候选答案。将一个立方数的数字排序(如升序),得到一个标准形式。

2025-05-01 13:40:54 193

原创 欧拉计划 Project Euler61(循环的多边形数)题解

先生成所有四位数的多边形数集合分类保存,然后dfs找即可。

2025-04-30 14:47:41 291

原创 欧拉计划 Project Euler60(素数对集合)题解

先欧拉筛预处理出素数,然后dfs,注意剪枝,不然太容易炸了。

2025-04-29 16:37:32 239

原创 欧拉计划 Project Euler59(异或解密)题解

【代码】欧拉计划 Project Euler59(异或解密)题解。

2025-04-28 13:28:18 180

原创 欧拉计划 Project Euler58(螺旋素数)题解

直接暴力即可,从1开始,每次边长增加2,如何算四个角,然后统计判断即可,具体实现看代码。

2025-04-27 12:13:55 289

原创 欧拉计划 Project Euler57(平方根逼近)题解

然后我们判断前一千次的分数即可。中余下部分的连分数展开。接下来,我们构造近似分数。

2025-04-26 13:15:35 973

原创 欧拉计划 Project Euler56(幂的数字和)题解

直接暴力枚举即可,用c++要模拟大数的乘法,否则会溢出。

2025-04-25 17:45:16 139

原创 欧拉计划 Project Euler55(利克瑞尔数)题解

直接暴力找即可,若使用其他语言要注意溢出的问题,这里我使用的手写大数加法。

2025-04-24 15:49:59 262

原创 欧拉计划 Project Euler54(扑克手牌)题解

这个题是个大模拟题,注意细节不要漏掉A5顺子,A可以当1使用,具体实现看代码,给了大量注释。牌面从小到大的顺序为:2、3、4、5、6、7、8、9、10、J、Q、K、A。

2025-04-23 13:31:48 741

原创 欧拉计划 Project Euler53(组合选择)题解

两个for循环暴力求解即可,注意溢出问题的处理,具体看代码。,有多少个不同形式的组合数。

2025-04-22 16:24:25 650

原创 快速排序及其应用

快速排序算法的实现以及应用

2025-04-14 14:53:31 226

原创 c++二分查找

c++ 二分查找的基本实现以及常见用法

2025-04-07 12:14:53 418

原创 Vim常用快捷键

Vim经常使用的快捷键

2025-04-07 09:52:27 429

原创 归并排序C++代码(带注释)

二路归并排序的C++代码

2025-03-24 20:06:28 133

原创 欧拉计划 Project Euler 52(重排的倍数) 题解

直接暴力即可,可知答案是142857。

2025-01-19 11:35:36 230

原创 欧拉计划 Project Euler 51(素数数字替换) 题解

将五位数 56**3 的第三和第四位数字替换为相同的任意数字,在十个可能值中有七个是素数,这也是同类例子中最小的一个。这些素数分别是:56003、56113、56333、56443、56663、56773 和 56993。56003 作为其中最小的数,也就是最小的满足这个性质的素数。将两位数 *3 的第一位数字替换为任意数字,在九个可能值中有六个是素数:13、23、43、53、73 和 83。通过将部分数字(不一定相同的)替换为相同的任意数字,有时能够得到八个素数,求满足这一性质的最小素数。

2025-01-15 12:14:50 195

原创 欧拉计划 Project Euler 50(连续素数的和) 题解

直接把100万以内的素数筛出来直接暴力枚举即可。

2025-01-14 15:35:25 158

原创 欧拉计划 Project Euler 49(素数重排) 题解

暴力跑就行,代码有注释。

2025-01-11 14:18:06 229

原创 全网讲解最详细的前缀函数与KMP算法(翻译自 CP-Algorithms,非本人原创,文章中有直达链接)

前缀函数与KMP算法

2025-01-10 16:45:56 1050

原创 欧拉计划 Project Euler 48(自幂) 题解

就是每次计算的时候对1e10(10000000000)取模即可。

2025-01-10 15:01:17 160

原创 欧拉计划 Project Euler 47(不同的质因数) 题解

分解质因数然后暴力找即可,具体的看代码注释。

2025-01-09 15:09:51 229

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除