数论
文章平均质量分 89
寂静山林
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
UVa 11977 Story of Tomisu Ghost
本文探讨了在不同进制下计算阶乘尾随零个数的问题。给定整数n和t,要求找到最大的进制b,使得n!在b进制下至少有t个尾随零。通过分析尾随零的本质是n!能被b^t整除,将问题转化为对b质因数分解的约束条件。采用筛法预处理质数,利用勒让德公式计算阶乘中各质因子的指数,并构造满足条件的最大b值。若不存在这样的b,则输出-1。算法复杂度为O(Tn),通过合理优化可以高效解决问题。原创 2026-01-07 10:22:42 · 822 阅读 · 0 评论 -
UVa 10764 Signed-digit Numbers
本文研究了将十进制数转换为有符号数字系统SD(b,a)表示的问题。SD(b,a)系统允许数字包含负数,扩展了传统数字集合的范围。通过分析数字系统特性,提出了基于余数调整的转换算法:对于正数,当余数超过a时减去b;对于负数,当余数小于-a时加上b,确保余数始终在[-a,a]范围内。算法证明了收敛性,并处理了输出格式要求,特别是负数的单引号表示。代码实现验证了该方法的正确性和高效性,时间复杂度为O(log|n|)。该研究为冗余数字系统的转换提供了有效解决方案。原创 2026-01-05 08:49:59 · 1050 阅读 · 0 评论 -
UVa 12619 Just Make A Wish
本文研究了动态计算土地面积因子个数的问题。初始面积为1,每天根据输入的正负整数G更新面积(乘以G或除以|G|),并计算当前面积的因子个数总和。关键点在于动态维护质因数分解,通过预处理最小质因子和模逆元优化分解过程。算法利用因子个数公式和费马小定理高效处理模运算,确保在D≤10^6时仍能快速求解。最终输出每天因子个数的累加和,并对1e9+7取模。原创 2025-12-17 11:26:19 · 677 阅读 · 0 评论 -
UVa 11014 Make a Crystal
本文研究了在三维立方体网格中放置可见原子的最大数量问题。通过数学建模,将问题转化为统计满足$\gcd(|x|,|y|,|z|)=1$的整数点数量。利用莫比乌斯反演公式,推导出计算式为$\sum_{d=1}^{M}\mu(d)\cdot[(2\lfloor M/d\rfloor+1)^3-1]$,其中$M=N/2$。算法采用线性筛法预处理莫比乌斯函数,每个查询可在$O(M)$时间内完成。样例验证表明该方法的正确性,时间复杂度分析显示其适用于大规模输入。该研究为晶体结构设计中的原子排列优化提供了数学工具。原创 2025-12-17 11:19:35 · 906 阅读 · 0 评论 -
UVa 10208 Liar or Not Liar that is the ...
题目要求判断给定整数$N$或$N!$是否可以表示为两个整数的平方和(即直角三角形斜边的平方)。根据费马平方和定理,一个数能表示为平方和当且仅当其质因数分解中所有形如$4k+3$的质因子指数均为偶数。对于普通整数,直接分解质因数判断;对于阶乘,需计算各$4k+3$质数在$N!$中的指数奇偶性,若指数为奇数则需输出该质数。算法通过线性筛法预处理质数,并利用勒让德公式高效计算阶乘的质因子指数。原创 2025-12-16 15:15:07 · 606 阅读 · 0 评论 -
UVa 10627 Infinite Race
本文研究了无限往返跑道上的运动员相遇问题。给定跑道长度L、运动员速度u和v以及时间t,计算在时间t内的相遇次数。关键点在于分析两种相遇模式:迎面相遇和同向超越,并处理端点相遇的重复计算。通过数学建模,推导出相遇次数的计算公式,最终实现高效求解。算法时间复杂度为O(n log min(u,v)),使用64位整数避免溢出,并通过交换速度值确保u≥v来简化计算。代码实现简洁,能快速处理大量输入数据。原创 2025-12-14 19:05:28 · 974 阅读 · 0 评论 -
UVa 107 The Cat in the Hat
题目描述了一个递归的“帽中猫”模型,其中初始猫身高为H,帽子中藏有N只小猫,每只小猫身高为原猫的1/(N+1),递归直到猫身高为1。给定初始高度H和工人猫数量W,要求计算未工作猫的数量和所有猫的总高度。 解题关键是通过建立数学模型:(N+1)^M = H 和 N^M = W,求解N和M。对于特殊情况(W=1)直接处理,一般情况则通过质因数分解和求最大公约数来确定M和N。算法实现包括素数筛、质因数分解和指数最大公约数计算,时间复杂度可接受。原创 2025-12-07 19:11:28 · 729 阅读 · 0 评论 -
UVa 12546 LCM Pair Sum
本文研究了一个数论问题:给定正整数 ( n ) 的质因数分解,计算所有满足 ( p \le q ) 且 ( \mathrm{lcm}(p,q)=n ) 的数对 ((p,q)) 的和 ( p+q ) 的总和 ( f(n) )。通过定义辅助函数 ( F(n) ) 并推导其闭合公式,利用积性性质将问题分解为各质因子幂的乘积。关键步骤包括推导 ( F(p^a) ) 的表达式、处理模逆元以及修正对称因子。最终算法高效计算 ( f(n) \mod 1000000007 ),时间复杂度为 ( O(C \log a_i)原创 2025-12-06 15:03:11 · 736 阅读 · 0 评论 -
UVa 12216 How Many Bases
给定N、M、T,求有多少个整数进制B(B≥2),使得N^M在B进制下末尾恰好有T个零。问题转化为求满足B^T整除N^M,但B^(T+1)不能整除N^M的B的数量。对N做质因数分解,设a_p = M * v_p(N)。对于每个质因数p,其指数e_p需满足两个条件:T * e_p ≤ a_p(保证整除),且至少存在一个p使得(T+1) * e_p > a_p(保证不整除)。利用容斥原理计算:总方案数 = ∏(⌊a_p/T⌋+1) − ∏(⌊a_p/(T+1)⌋+1),结果对100000007取模。原创 2025-12-06 09:53:09 · 1139 阅读 · 0 评论 -
UVa 10829 L-Gap Substrings
本文研究了如何高效统计字符串中满足特定间隔条件的子串数量。通过分析问题特征,提出了一种基于字符串哈希的优化算法,将时间复杂度从O(n³)降至O(n²)。算法预处理字符串的哈希值,快速比较子串是否相同,并通过合理设置循环边界确保正确性。实验表明该方法能有效处理长度达50,000的字符串,在合理时间内完成计算。对于更大规模数据,建议采用后缀数组等更高级的字符串处理方法。该研究为字符串模式匹配问题提供了一种实用解决方案。原创 2025-12-06 08:04:59 · 948 阅读 · 0 评论 -
UVa 11184 Joyful Ride
本文探讨了环形过山车轨道塔高度的构造问题,要求塔高为1到n+1的互不相同整数,且相邻塔高差的绝对值恰好覆盖1到n。通过数学分析,发现解存在的条件是n≡0或3(mod4)。对于满足条件的n,采用差分法构造序列:跳过特定差值后交替加减差值生成高度。该方法保证高度在合理范围内且满足所有约束,时间复杂度O(n)。提供的参考代码实现了这一构造过程,展示了数学分析与算法设计相结合解决复杂问题的思路。原创 2025-12-04 10:02:17 · 592 阅读 · 0 评论 -
UVa 10548 Find the Right Changes
本文研究了以两种货物交换支付金额的问题,转化为求解线性丢番图方程的非负整数解。当两种货物单位价值均为正时,通过扩展欧几里得算法计算解的个数;当其中一种为负时,只需判断解的存在性,存在则有无穷多解。算法对每组数据在O(log M)时间内完成,适用于大规模输入。样例测试验证了算法的正确性,能正确处理无解、有限解和无穷解的情况。原创 2025-12-04 08:21:35 · 783 阅读 · 0 评论 -
UVa 419 Matching Meetings
本文介绍了一个会议安排问题的解决方案,需要为多位教授寻找共同空闲时间段。问题涉及从当前日期开始一年内的工作日安排,将每天9:00-17:00划分为32个15分钟时段。算法采用日期离散化处理和位图标记忙碌时段的方法,通过遍历所有工作日寻找连续空闲时段。解决方案包括日期处理系统、时间离散化、忙碌时段标记和会议查找四个主要步骤,使用map和bitset等数据结构高效处理时间冲突。时间复杂度约为350,000次操作,空间复杂度为O(D+n),能够满足题目要求的约束条件。原创 2025-12-03 18:35:18 · 523 阅读 · 0 评论 -
UVa 11768 Lattice Point or Not
本文研究线段上格点数量的计算问题,针对输入坐标可能含一位小数的特殊情况,提出了一种高效算法。通过将坐标乘以10转换为整数处理,利用最大公约数确定线段上的候选点,并筛选满足坐标能被10整除的格点。该方法避免了浮点精度问题,将问题转化为整数域计算。测试样例验证了算法的正确性,包括端点重合、无格点和多格点等情况。关键点在于坐标转换、参数化表示和条件筛选,保证了算法在较大输入范围内的效率。原创 2025-12-03 12:04:36 · 676 阅读 · 0 评论 -
UVa 1575 Factors
算术基本定理表明,每个大于1的整数可以唯一表示为质数的乘积。定义函数f(k)为整数k的质因子排列数,例如f(10)=2。题目要求对于给定的n,找到最小的k使得f(k)=n。通过分析f(k)的计算公式(多重排列数),将问题转化为寻找满足特定组合数条件的质数指数序列。采用深度优先搜索枚举可能的指数组合,并利用剪枝优化避免溢出。最终通过预处理和映射存储结果,实现高效查询。 关键词:质因数分解、排列数、组合数学、深度优先搜索、剪枝优化原创 2025-12-03 07:34:02 · 1037 阅读 · 0 评论 -
UVa 13035 Another Combination Problem
本文探讨了一个组合计数问题:给定N个盒子,第i个盒子有i+1个不同颜色的球。从任选一个盒子中取出两个球分别放在左右手中(考虑顺序),求所有可能的方案数。通过分析发现,总方案数为S(N)=N(N+1)(N+2)/3。针对大数取模问题,提出使用乘法逆元来处理除法运算。最终给出了时间复杂度为O(TlogM)的算法实现,其中T是测试用例数,M=10^9+7。文章强调了模运算中防止整数溢出的重要性,并验证了公式的正确性。原创 2025-12-01 20:43:24 · 552 阅读 · 0 评论 -
UVa 10837 A Research Problem
该研究探讨了欧拉φ函数的逆问题:给定φ(n)值,寻找最小的正整数n。通过分析φ函数的性质,将问题转化为深度优先搜索,利用质因数分解和剪枝优化策略。算法预先生成质数表,采用DFS递归搜索可能的质因数组合,并检查特殊情况。在搜索过程中应用多重剪枝,如限制n的范围、优先处理小质数等,确保在合理时间内求解。最终实现了一个高效算法,能够处理大范围内的φ(n)值,找到满足条件的最小n。原创 2025-11-29 21:56:56 · 701 阅读 · 0 评论 -
UVa 12220 Divisible Subsequences
本文提出了一种高效算法,用于统计给定整数序列中所有和能被某整数整除的连续子序列数量。通过利用前缀和与同余定理,将问题转化为寻找余数相同的前缀对,将时间复杂度从O(n²)优化至O(n)。算法使用计数数组记录各余数出现次数,最终通过组合数计算满足条件的子序列数。该方法在50,000长度的序列上表现出色,适用于大规模数据处理。原创 2025-11-29 06:40:10 · 926 阅读 · 0 评论 -
UVa 10569 Number Theory
本文研究将一个大整数的立方表示为n个不同正整数立方和的问题。通过数学构造法,发现对于n≥3的情况存在解,并给出递归构造方法:基于恒等式(6k)^3 = (3k)^3 + (4k)^3 + (5k)^3,从n-2的解推导n的解。预处理所有n=1到100的解,其中n=1、3、4有已知特解,n=2无解。算法采用高精度计算处理大数,查询时直接输出预存结果。该方法高效解决了立方和分解问题,适用于最多250位的大数情况。原创 2025-11-27 08:12:33 · 755 阅读 · 0 评论 -
UVa 1386 Cellular Automaton
本文研究了循环细胞自动机的快速演化问题。通过数学建模,将细胞状态转移表示为循环矩阵乘法,并利用循环矩阵的性质和快速幂算法优化计算。算法首先构造转移矩阵的第一行,然后使用矩阵快速幂计算k次转移后的矩阵,最后通过卷积运算得到最终状态。该算法将时间复杂度从O(n·d·k)优化到O(n²logk),空间复杂度为O(n),有效解决了大规模迭代问题。实验表明该方法正确高效,适用于细胞自动机的大规模演化计算。原创 2025-11-26 12:24:16 · 1021 阅读 · 0 评论 -
UVa 10658 reArrange
本文研究了弹珠奇偶分离问题的最少移动次数计算。通过分析发现,该问题可转化为三栈排序问题,并推导出递推公式:F(n)=2F(n-1)+B[(n-1)%6],其中B=[0,1,1,0,1,1]。基于此规律,预先计算1到65的结果后,可O(1)回答每个查询。算法复杂度为O(n_max+T),完全满足题目要求。原创 2025-11-26 07:39:03 · 804 阅读 · 0 评论 -
UVa 1521 GCD Guessing Game
本文研究了猜数游戏的最优策略问题。通过将猜数转化为质数分组问题,提出了一种双指针贪心算法:预处理所有质数后,用大质数乘小质数的组合方式最大化信息增益,从而最小化猜测次数。算法复杂度为O(n log log n),能高效处理n≤10000的情况。示例验证了该策略的正确性,如n=6时仅需2次猜测。该解法体现了信息论与组合优化的巧妙结合。原创 2025-11-26 07:38:13 · 981 阅读 · 0 评论 -
UVa 13153 Number of Connected Components
本文提出了一种基于并查集和质因数分解的算法,用于计算节点标签GCD大于1时形成的图的连通分量数。通过预处理质数表,将每个节点与其质因子合并,利用并查集维护连通性。算法高效处理了直接建图不可行的问题,时间复杂度为O(NlogM),适用于大规模数据。特殊处理标签1的节点,最终连通分量数为非1节点的连通分量数与1的节点数量之和。该方法通过间接建图的思想,有效解决了图论中的连通性问题。原创 2025-11-25 16:47:17 · 686 阅读 · 0 评论 -
UVa 12888 Count LCM
本文研究了计算满足LCM(i,j)=i×j的数对(i,j)数量的问题。通过数论知识将问题转化为求互质对的数量,即GCD(i,j)=1。利用莫比乌斯反演公式,将问题转换为计算Σμ(d)·⌊N/d⌋·⌊M/d⌋。采用线性筛法预处理莫比乌斯函数,并在O(min(N,M))时间内求解每个测试用例。算法在题目约束下高效可行,时间复杂度主要取决于预处理和直接计算步骤。代码实现展示了筛法预处理和公式计算的完整过程,适用于大规模输入数据。原创 2025-11-25 16:23:01 · 622 阅读 · 0 评论 -
UVa 12396 Remoteland
本文分析了如何在给定整数范围内找到不同整数的最大完全平方数乘积问题。通过数学转化,将问题转化为对阶乘进行质因数分解并调整指数为偶数的形式。利用Legendre公式计算质数指数,结合筛法预处理质数,实现高效求解。算法复杂度为线性,适用于大范围输入,最终结果对1000000007取模输出。原创 2025-11-25 11:47:44 · 740 阅读 · 0 评论 -
UVa 1452 Jump
本文研究了约瑟夫问题的变种,需要输出循环移除序列的最后三个数字。通过分析约瑟夫问题的递推性质,提出了一个高效算法:利用递推公式分别计算倒数第三、第二和第一个被移除的数字。该算法时间复杂度为O(n),空间复杂度为O(1),适用于大规模数据(n≤500,000)。验证表明算法正确输出了示例结果,如Jump(10,2)序列的最后三个数字1、9、5。这种基于数学性质的方法避免了直接模拟的高复杂度,实现了高效求解。原创 2025-11-25 11:19:45 · 902 阅读 · 0 评论 -
UVa 11024 Circular Lock
本文研究了Bolkas教授设计的2×2模数锁问题。通过数学建模,发现锁能被解除的关键条件是各设备状态的线性组合模周期p等于0(其中p为各设备周期的最大公约数)。基于此,提出了一个高效算法:计算各设备状态对p的模值,检查条件(s11-s12-s21+s22)≡0(mod p)是否成立。该算法时间复杂度为O(n·log M),空间复杂度O(1),能快速判断锁是否可解。这一解决方案巧妙地将复杂问题转化为简单的模运算检查,体现了数学洞察在问题简化中的重要性。原创 2025-11-24 13:40:28 · 891 阅读 · 0 评论 -
UVa 10754 Fantastic Sequence
本文探讨了如何利用矩阵快速幂高效计算带常数项的线性递推序列问题。针对给定递推式a_n = (Σc_i a_{n-i}) + c_{k+1}和模数m,当n极大时(n<2^31),直接计算不可行。通过状态扩展技巧将递推转化为矩阵形式,并构造(k+1)×(k+1)的转移矩阵,结合快速幂算法将时间复杂度优化至O(k^3 log n)。特别处理了n<k和k=0的情况,提供了完整的C++实现方案。该方法是解决线性递推问题的通用高效技巧,适用于算法竞赛和数学计算场景。原创 2025-11-22 16:33:17 · 752 阅读 · 0 评论 -
UVa 11083 Zeroes Revisited
本文探讨了计算阶乘在无平方因子进制下尾随零总和的问题。给定n和b,函数soz(n,b)定义为1到n的z(i,b)之和,其中z(i,b)表示i!在b进制下的尾随零个数。通过数学推导发现,对于无平方因子数b,尾随零个数由其最大质因子决定。文章提出高效算法:首先分解b找到最大质因子p_max,然后使用求和公式快速计算∑⌊i/p_max^k⌋的和,避免了直接遍历。该算法时间复杂度为O(√b + log_pn),能高效处理n≤4×10^9的大规模数据。关键步骤包括质因数分解和利用数学公式进行优化计算。原创 2025-11-20 08:14:58 · 700 阅读 · 0 评论 -
UVa 11551 Experienced Endeavour
本文分析了UVa 11551题目,要求模拟重复线性变换过程。通过数学建模将问题转化为矩阵乘法,利用矩阵快速幂将时间复杂度从O(n²×r)优化为O(n³×log r)。给出了具体算法步骤和C++实现代码,展示了如何高效解决大规模重复变换问题,体现了数学建模和算法优化在编程竞赛中的重要性。原创 2025-11-20 08:13:56 · 1013 阅读 · 0 评论 -
UVa 12465 The Turanga Leela Problem
该问题要求计算满足同余条件的正整数m的数量。通过数学转化可知,m必须能够整除a与b的差的绝对值d。因此,问题转化为求d的正因数个数。算法通过遍历1到√n的数来统计因数,时间复杂度为O(√d)。输入保证a≠b,无需处理特殊情况。代码实现简洁高效,已验证样例输出正确。原创 2025-11-18 08:25:06 · 786 阅读 · 0 评论 -
UVa 12041 BFS(Binary Fibonacci String)
这篇文章探讨了一种类似于斐波那契数列的字符串序列BFS(n),其递归定义为BFS(n)=BFS(n-2)+BFS(n-1)。针对给定N、i、j的查询,通过预计算字符串长度和递归定位字符的方法,避免了直接构建巨大的字符串。关键优化包括:利用斐波那契数列快速增长特性将大N压缩到固定值,保持奇偶性以确保正确性,并逐个字符输出所需子串。算法复杂度为O(T×10000×50),在题目约束下高效可行。原创 2025-11-18 08:22:49 · 721 阅读 · 0 评论 -
UVa 12184 Transcribed Books
本文探讨了一个关于验证中世纪修道院抄本序列号有效性的问题。给定若干由10位数字组成的序列号,要求找出最大的整数N(N>1),使得所有序列号均满足前9位数字之和与第10位数字在模N下同余,且第10位数字严格小于N。通过数学建模将问题转化为求多个差值的最大公约数,并验证约束条件,最终输出符合条件的N或判定无解。算法的时间复杂度为线性,适用于大规模输入。代码实现中需要注意整数溢出和特殊情况的处理。原创 2025-11-17 08:10:52 · 713 阅读 · 0 评论 -
UVa 12425 Best Friend
题目要求统计满足 gcd(I,N) ≤ X 的整数 I 的数量,其中 I ∈ [1, N]。通过数学分析,可以将问题转化为对 N 的所有约数 d ≤ X 求和欧拉函数 φ(N/d)。算法步骤包括:(1) 分解 N 的质因数;(2) 生成所有约数;(3) 计算每个约数对应的欧拉函数值;(4) 预处理前缀和;(5) 对每个查询 X,二分查找最大满足条件的约数并输出前缀和。该算法通过约数分解和欧拉函数计算,有效降低了计算复杂度,适用于大规模数据查询。原创 2025-11-17 08:09:38 · 594 阅读 · 0 评论 -
UVa 10413 Crazy Savages
题目描述了一个环形洞穴中的野人相遇问题。给定n个野人各自的初始位置、移动步数和寿命,要求找到最小的洞穴数m,使得所有野人在自然死亡前不会相遇。关键点在于将相遇条件转化为同余方程kA ≡ B mod m,通过扩展欧几里得算法检验是否有解。算法从最大初始位置开始枚举m,逐一验证每个m是否满足所有野人对都不相遇的条件。时间复杂度为O(t·10^6·n^2 log m),在给定约束下可高效解决问题。原创 2025-11-16 08:03:14 · 810 阅读 · 0 评论 -
UVa 12799 RSA
本文介绍了RSA加密算法的原理及其破解方法。给定RSA公钥(N,E)和加密消息C,通过质因数分解N获得p和q,计算欧拉函数φ(N)=(p-1)(q-1),再用扩展欧几里得算法求出e的逆元d,最后用快速幂计算M=C^d mod N恢复原始消息。该方法适用于N≤10^9的情况,采用试除法分解质因数,时间复杂度可行。代码实现了完整的解密流程,展示了数论在密码学中的应用。原创 2025-11-14 08:27:11 · 1037 阅读 · 0 评论 -
UVa 1118 Binary Stirling Numbers
文章分析了第二类斯特林数S(n,m)模2的计算问题。针对n高达10^9的情况,直接计算不可行。研究发现S(n,m)的奇偶性与二进制表示相关:当且仅当(n-m)与⌊(m+1)/2⌋-1的按位与为0时结果为1。基于此结论,提出了O(1)复杂度的算法,通过计算diff=n-m和k值后检查按位与即可确定奇偶性。该解法展示了组合数学问题在模2情况下可转化为简洁的位运算特性。原创 2025-11-14 08:10:33 · 833 阅读 · 0 评论 -
UVa 11392 Binary*3 Type Multiple
该问题要求找到一个正整数K的倍数,该倍数仅由数字3和0组成且数字按非递增顺序排列。通过数学分析和数论方法,可以将问题分解为:1) 确定K中的因子2和5的个数,计算所需的末尾0的个数b;2) 对于剩余与10互质的K',寻找由a个3组成的数能被K'整除的最小a。使用模运算模拟构造a个3的组合,确保算法高效性。最终答案由a个3和b个0组成,总长度a + b,符合最短长度和最大字典序的要求。该方法在O(K)时间复杂度内有效解决问题。原创 2025-11-14 08:09:28 · 717 阅读 · 0 评论 -
UVa 12765 Factorial Products
题目要求比较两个阶乘乘积是否相等,每个乘积由多个个位数字的阶乘相乘组成。由于直接计算乘积会数值过大,采用质因数分解的方法:预先计算0-9阶乘的质因数指数(2,3,5,7),然后分别累加两个乘积中各数字阶乘的质因数指数,最后比较两组指数是否完全相同。该方法避免了计算大数,提高了效率,适用于最多450个测试用例、每个乘积最多1000个因子的情况。原创 2025-11-13 09:01:59 · 1016 阅读 · 0 评论 -
UVa 10914 Abundance and Perfect Numbers
本文研究完美数与几乎奇素数的数学性质,提出计算丰度函数的高效算法。完美数是其因数之和等于自身两倍的数,而几乎奇素数则是满足特定条件的偶数。通过数学推导,得出几乎奇素数的因数函数简化公式,并设计基于筛法和前缀和的预处理算法。该算法能高效处理大规模输入查询,时间复杂度为O(n log log n)预处理和O(1)查询。实验结果表明该方法在n≤10^7范围内有效,为类似数论问题提供了优化思路。原创 2025-11-12 08:12:36 · 677 阅读 · 0 评论
分享