洛谷题解
文章平均质量分 81
洛谷题解
君义_noip
五道口职业技术学院毕业
信息学奥赛教练
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
信息学奥赛一本通 1649:【例 2】2^k 进制数 | 1846:【06NOIP提高组】2^k进制数 | 洛谷 P1066 [NOIP 2006 提高组] 2^k 进制数
本文研究了2^k进制数的组合数学问题,提出了基于高精度计算的两种解法。解法1采用阶乘式求组合数,通过预处理阶乘数组并实现高精度运算;解法2利用递推式求组合数,结合高精度压位技术优化内存使用。研究结果表明,两种方法均可有效解决题目要求,其中解法1更直观但计算量大,解法2通过内存优化更适合大规模问题。本文为处理类似组合数学问题提供了实用的高精度计算框架,对算法设计与优化具有参考价值。原创 2025-12-23 02:41:30 · 356 阅读 · 0 评论 -
信息学奥赛一本通 1618:越狱 | 洛谷 P3197 [HNOI2008] 越狱
本文通过补集转化思想求解越狱问题,计算n个数值范围为[1,m]的整数序列中存在相邻相等元素的方案数。首先求出总序列数m^n,再减去相邻元素均不相等的序列数m*(m-1)^(n-1),结果对100003取模。提供了两种解法:直接快速幂计算和使用费马小定理降幂优化。最终结果为(m^n - m*(m-1)^(n-1)) mod 100003,通过数学取模处理可能出现的负数情况。原创 2025-12-21 21:48:02 · 738 阅读 · 0 评论 -
信息学奥赛一本通 1028:字符菱形 | OpenJudge NOI 1.1 09:字符菱形 | 洛谷 B2025 输出字符菱形
【题目链接】ybt 1028:字符菱形OpenJudge NOI 1.1 09:字符菱形【题目考点】输入输出字符(扩展)循环【解体思路】(扩展)问题:输出对角线长度为n的菱形图案(n>=3且n为奇数)思路:该菱形共有n行,假设这n行编号为0 ~ n-1将这n行分为三部分:前半段,中间元素,后半段由于n是奇数,将/视为整除运算的话,有(n-1)/2 等于 n/2前半段共有n/2个元素,编号为0 ~ n/2-1中间元素的编号为:n/2后半段共有n/2个元素,编号为 n/2+原创 2020-12-28 01:29:30 · 4926 阅读 · 0 评论 -
信息学奥赛一本通 1027:输出浮点数 | OpenJudge NOI 1.1 07:输出浮点数 | 洛谷 B2024 输出浮点数
【题目链接】ybt 1027:输出浮点数OpenJudge NOI 1.1 07:输出浮点数【题目考点】1. 以不同形式输出浮点类型的量使用printf 输出浮点型量时,不同的定格式控制说明符效果如下格式控制说明符效果示例%f以小数形式输出10.020000%e以科学计数法形式输出1.002e1%g至多保留6位有效数字,去除末尾的0。 当该数字在%e形式下指数大于等于6或小于等于-5时,使用%e,否则使用%f。10.02注:存在说明符%E,原创 2020-12-28 00:33:36 · 4840 阅读 · 0 评论 -
信息学奥赛一本通 1026:空格分隔输出 | OpenJudge NOI 1.1 06:空格分隔输出 | 洛谷 B2023 空格分隔输出
【题目链接】ybt 1026:空格分隔输出OpenJudge NOI 1.1 06:空格分隔输出【题目考点】1. 输入输出char, int, float, double类型的量使用cin,cout:直接输入输出使用scanf, printf 进行输入输出时,必须指定格式控制说明符类型格式控制说明符char%cint%dfloat%fdouble%lf注:输入double类型变量时,必须用%lf,输出double类型变量时,可以用%fix原创 2020-12-28 00:33:15 · 5067 阅读 · 0 评论 -
信息学奥赛一本通 1025:保留12位小数的浮点数 | OpenJudge NOI 1.1 05:输出保留12位小数的浮点数 |
【题目链接】ybt 1025:保留12位小数的浮点数OpenJudge NOI 1.1 05:输出保留12位小数的浮点数【题目考点】1. 输出浮点型量a保留x位小数的写法:cout<<fixed<<setprecision(x)<<a;printf("%.xf", a);2. 浮点型量的精度float 单精度浮点型,可以表示6~7位有效数字double 双精度浮点型,可以表示15~16位有效数字该题要保留到小数点后12位,只能用双精度浮点型量计算【题原创 2020-12-28 00:32:26 · 2784 阅读 · 0 评论 -
信息学奥赛一本通 1453:移动玩具 | 洛谷 P4289 [HAOI2008] 移动玩具
本文介绍了两种解决"移动玩具"问题的方法:广搜和双向广搜。广搜方法通过队列遍历状态空间,每次移动玩具并检查新状态是否为目标状态。双向广搜则同时从起始和目标状态出发搜索,当两种搜索路径相遇时得到解。两种方法都使用map记录状态,其中第一种方法在Node结构中重载运算符实现比较,第二种方法将状态转为字符串作为键。两种解法都能有效找到最少移动步数,双向广搜通常效率更高。原创 2025-12-19 00:26:13 · 629 阅读 · 0 评论 -
信息学奥赛一本通 1899:【17NOIP提高组】小凯的疑惑 | 洛谷 P3951 [NOIP 2017 提高组] 小凯的疑惑
本文探讨了NOIP2017提高组题目"小凯的疑惑"的两种解法。题目给出两种面值互质的金币a和b,要求找出无法用这两种金币组合支付的最大价值。 解法1利用扩展欧几里得定理,通过求解不定方程xa+yb=1,推导出最大无法支付价值n的计算公式为((x%b)-1)*a+((y%a)-1)*b-1。 解法2则直接给出数学公式n=ab-a-b,通过分析金币组合的限制条件,证明该公式的正确性。两种解法殊途同归,最终都指向相同的简洁数学表达式。 文章展示了从数论推导到直接数学公式的解题思路,为理解该问题原创 2025-12-18 00:12:38 · 703 阅读 · 0 评论 -
【模板:求组合数】信息学奥赛一本通 1648:【例 1】「NOIP2011」计算系数 | 1866:【11NOIP提高组】计算系数 | 洛谷 P1313 [NOIP 2011 提高组] 计算系数
本文介绍了计算二项式系数的方法,主要解决NOIP2011提高组题目中求$(ax+by)^k$展开式中$x^ny^m$项系数的问题。通过二项式定理分析,系数为$C_k^na^nb^m\bmod10007$。文章详细阐述了三种求解组合数$C_k^n$的方法:1)递推或记忆化递归构建组合数数组;2)利用阶乘公式预处理阶乘和逆元;3)直接乘除计算。重点分析了每种方法的时间复杂度和空间复杂度,并提供了相应的代码实现。其中方法1采用杨辉三角递推关系,方法2使用费马小定理求逆元,方法3则直接计算连乘积。这些方法在给定约束原创 2025-12-16 16:03:40 · 790 阅读 · 0 评论 -
洛谷 P3807 【模板】卢卡斯定理 / Lucas 定理
本文介绍了卢卡斯定理及其在求解大组合数取模问题中的应用。卢卡斯定理适用于模数为质数的情况,将大组合数分解为多个小组合数的乘积。文章详细阐述了定理的数学证明过程,并提供了基于预处理阶乘和乘法逆元的实现方法。通过洛谷P3807题的代码示例,展示了如何利用卢卡斯定理高效计算组合数取模,其中预处理阶乘数组和快速幂求逆元是关键步骤。该算法能够有效处理n和m较大的情况,适用于多次查询的场景。原创 2025-12-16 00:11:27 · 641 阅读 · 0 评论 -
洛谷 P4777 【模板】扩展中国剩余定理(EXCRT)
本文介绍了扩展中国剩余定理(EXCRT)的解法,用于解决模数不互质的线性同余方程组问题。通过逐步合并同余方程,将两个同余方程转化为一个更通用的形式,最终得到方程组的解。关键在于利用扩展欧几里得算法求解不定方程,并处理中间结果可能溢出的问题。代码实现中使用__int128类型确保计算精度,最终输出符合所有同余条件的最小正整数解。该方法突破了传统中国剩余定理对模数互质的限制,具有更广泛的应用价值。原创 2025-12-14 22:56:36 · 668 阅读 · 0 评论 -
信息学奥赛一本通 1634:【例 4】曹冲养猪 | 洛谷 P1495 【模板】中国剩余定理(CRT)/ 曹冲养猪
本文介绍了使用中国剩余定理(CRT)解决线性同余方程组的方法。题目要求求解曹冲养猪问题,即给定n个同余方程x≡b_i(mod a_i),其中a_i两两互质。通过计算模数乘积M,构造q_i=M/m_i,并利用乘法逆元求解方程组的最小正整数解。解题过程中需要注意数值范围,使用128位整型防止溢出。代码实现包括扩展欧几里得算法求逆元和中国剩余定理的核心计算步骤,最终输出满足所有同余条件的最小解。原创 2025-12-14 00:59:01 · 765 阅读 · 0 评论 -
信息学奥赛一本通 1633:【例 3】Sumdiv | OpenJudge 百练 1845:Sumdiv | 洛谷 P1593 因子和
摘要:题目要求计算A^B的约数和模9901的结果。解法基于算术基本定理分解质因数,结合等比数列求和公式与费马小定理处理大指数情况。当A为0或1时直接返回结果;否则分解A的质因数,对每个质因数p^a计算1+p+...+p^(a*B)模9901的值。利用快速幂求逆元和降幂处理,最终将各质因数结果相乘取模得到答案。原创 2025-12-13 02:08:31 · 910 阅读 · 0 评论 -
信息学奥赛一本通 1631:【例 1】青蛙的约会 | 洛谷 P1516 青蛙的约会
摘要:本文解决了两只青蛙在环形数轴上相遇的问题。通过建立线性同余方程,分析青蛙跳跃后的位置关系,使用扩展欧几里得算法求解方程。当方程有解时,计算最小非负整数解即为首次相遇时的跳跃次数;无解则输出"Impossible"。代码实现了这一算法,适用于不同初始位置和跳跃能力的青蛙相遇问题。原创 2025-12-11 01:58:38 · 1003 阅读 · 0 评论 -
【模板:逆元 线性同余方程】信息学奥赛一本通 1632:【 例 2】[NOIP2012]同余方程 | 1872:【12NOIP提高组】 | 洛谷 P1082 [NOIP 2012 提高组] 同余方程
本文介绍了求解同余方程ax≡1(mod b)的方法。当gcd(a,b)=1时,该方程的解即为a的模b乘法逆元。通过扩展欧几里得算法,可以高效地求出满足xa+yb=1的整数解x和y,其中x mod b即为所求的最小正整数解。该算法时间复杂度为O(log(max(a,b))),适用于求解线性同余方程和计算乘法逆元。文章给出了使用扩展欧几里得算法的C++实现代码,通过数学取模确保结果为正整数解。原创 2025-12-11 01:26:03 · 1046 阅读 · 0 评论 -
信息学奥赛一本通 4017:【GESP2309三级】小杨的储蓄 | 洛谷 B3867 [GESP202309 三级] 小杨的储蓄
摘要:题目要求模拟小杨每天向n个储钱罐中的一个存入与天数相等的金额。使用一维数组m记录每个储钱罐的金额,初始为0。每天根据输入a将当天天数i存入第a个储钱罐。最后输出各储钱罐的总金额。代码使用数组实现,时间复杂度O(d)。原创 2025-12-10 23:24:34 · 593 阅读 · 0 评论 -
信息学奥赛一本通 1024:保留3位小数的浮点数 | OpenJudge NOI 1.1 04:输出保留3位小数的浮点数 | 洛谷 B2021 输出保留 3 位小数的浮点数
【题目链接】ybt 1024:保留3位小数的浮点数OpenJudge NOI 1.1 04:输出保留3位小数的浮点数【题目考点】输出浮点型量a保留x位小数的写法:cout<<fixed<<setprecision(x)<<a;printf("%.xf", a);【题解代码】解法1:使用cin,cout输入输出#include<bits/stdc++.h>using namespace std;int main(){ floa原创 2020-12-28 00:32:52 · 3246 阅读 · 0 评论 -
信息学奥赛一本通 1022:整型与布尔型的转换 | OpenJudge NOI 1.2 09:整型与布尔型的转换 | 洛谷 B2019 整型与布尔型的转换
【题目链接】ybt1022:整型与布尔型的转换OpenJudge NOI 1.2 09:整型与布尔型的转换【题目考点】1. bool类型(布尔类型)bool类型常量:true(真),false(假)true实质是数字1,false实质是数字0bool类型变量声明:bool b;bool类型变量的值只能是true或false2. 整型量转为布尔类型量若该整型量的值不为0,转化成的布尔型量值为true若该整型量的值为0,转化成的布尔型量的值为false4. 布尔型量转为整型量原创 2020-12-28 00:31:40 · 3453 阅读 · 0 评论 -
信息学奥赛一本通 1021:打印字符 | OpenJudge NOI 1.2 08:打印字符 | 洛谷 B2018 打印字符
【题目链接】ybt 1021:打印字符OpenJudge NOI 1.2 08:打印字符【题目考点】1. ASCII码表ASCII码表是一张表,规定了0~127各数字对应的字符。2. char类型char类型是字符型,用于表示字符。其实质是有符号整型。char类型变量占用一个字节,可以视为有符号整型变量,可以表示-128~127的数字。char类型量就是一个数字,可以以数字形式输出,也可以以字符形式输出。若以字符形式输入,以数字形式输出,输出的就是该字符的ASCII码值。3. 整型输入原创 2020-12-27 14:46:35 · 2823 阅读 · 0 评论 -
信息学奥赛一本通 1020:打印ASCII码 | OpenJudge NOI 1.2 07:打印ASCII码 | 洛谷 B2017 打印 ASCII 码
【题目链接】ybt 1020:打印ASCII码OpenJudge NOI 1.2 07:打印ASCII码【题目考点】1. ASCII码表ASCII码表是一张表,规定了0~127各数字对应的字符。2. char类型char类型是字符型,用于表示字符。其实质是有符号整型。char类型变量占用一个字节,可以视为有符号整型变量,可以表示-128~127的数字。char类型量就是一个数字,可以以数字形式输出,也可以以字符形式输出。若以字符形式输出,输出的就是在ASCII码表中该数字对应的字符。原创 2020-12-27 14:25:37 · 4193 阅读 · 1 评论 -
信息学奥赛一本通 1019:浮点数向零舍入 | OpenJudge NOI 1.2 06:浮点数向零舍入 | 洛谷 B2016 浮点数向零舍入
【题目链接】ybt 1019:浮点数向零舍入OpenJudge NOI 1.2 06:浮点数向零舍入【题目考点】强制类型转换C语言写法:(类型)量C++写法: 类型(量)强制类型转换可以使整个表达式的值变为要转换的类型,但原变量的类型和值都没有变化。例:float a = 3.14;cout<<(int)a<<endl;//输出3cout<<int(a)<<endl;//输出3赋值或强制类型转换过程中的精度丢失将浮点型量赋原创 2020-12-27 04:44:09 · 4019 阅读 · 0 评论 -
信息学奥赛一本通 1015:计算并联电阻的阻值 | OpenJudge NOI 1.3 10:计算并联电阻的阻值 | 洛谷 B2015 计算并联电阻的阻值
【题目链接】ybt 1015:计算并联电阻的阻值OpenJudge NOI 1.3 10:计算并联电阻的阻值【题目补充】OpenJudge中该题有提示,只能用float声明变量。如用double声明,提交后会出错。ybt中用float或double声明都可以。【题目考点】计算表达式有浮点型的量参与除法运算,表达式的值才是浮点型的,最终才可以得到小数结果输出浮点型数字a,保留x位小数cout<<fixed<<setprecision(x)<<a;原创 2020-12-27 03:44:15 · 3462 阅读 · 0 评论 -
信息学奥赛一本通 2130:【25CSPJ普及组】座位 | 洛谷 P14358 [CSP-J 2025] 座位
本文介绍了四种解决蛇形排座问题的算法。问题要求根据学生成绩降序排列后,按照蛇形顺序(先向下后向上交替)在n×m的矩阵中确定小R的位置。解法1通过焦点移动模拟填充过程;解法2按列处理,统计大于等于小R成绩的人数k,确定其位置;解法3直接计算k对应的行列;解法4通过分析位置序列规律求解。所有解法时间复杂度均为O(nm),其中解法2-4通过优化避免了排序步骤。注意输出顺序为列号先行号后。原创 2025-11-26 00:49:08 · 839 阅读 · 0 评论 -
信息学奥赛一本通 2129:【25CSPJ普及组】拼数 | 洛谷 P14357 [CSP-J 2025] 拼数
题目要求将字符串中的数字字符提取并按从大到小排序,拼成最大数值。摘要如下: 本题给出字符串,需提取其中的数字字符并排序生成最大数值。提供三种解法: sort排序:提取数字后使用sort函数降序排列,时间复杂度O(nlogn)。 计数排序:利用数字范围小的特点统计频次后输出,时间复杂度O(n)。 multiset排序:利用红黑树自动排序特性,时间复杂度O(nlogn)。 核心思路均为将数字字符排序后拼接,不同解法适用于不同场景,计数排序在数字种类少时效率最优。原创 2025-11-25 22:25:52 · 1002 阅读 · 0 评论 -
信息学奥赛一本通 1014:与圆相关的计算 | OpenJudge NOI 1.3 09:与圆相关的计算 | 洛谷 B2014 与圆相关的计算
一、 题目链接ybt 1014:与圆相关的计算OpenJudge NOI 1.3 09:与圆相关的计算题目补充:OpenJudge中有提示,本题中圆周率只能取3.14159,这一点在ybt中没有说明。如果取3.1415926来计算,结果是错误的。二、 题目考点常量普通常量const 常量类型 常量名 = 常量的值;例:定义常量PI: const double PI = 3.14159符号常量用预处理语句定义符号常量,其本质是字符替换例:定义符号常量PI: #define PI原创 2020-12-27 03:31:56 · 4820 阅读 · 0 评论 -
信息学奥赛一本通 1013:温度表达转化 | OpenJudge NOI 1.3 08:温度表达转化 | 洛谷 B2013 温度表达转化
一、 题目链接ybt 1013:温度表达转化OpenJudge NOI 1.3 08:温度表达转化二、 题目考点书写计算表达式了解*/的优先级高于±了解()可以改变运算优先级输出浮点型数字a保留x位小数的写法:cout<<fixed<<setprecision(x)<<a;printf("%.xf", a);变量类型自动转换只要参与运算的量中有一个是浮点型的,整个表达式的值就是浮点型的。因此,本题中,变量f要设为浮点型变量,否则会出现整数间的整除原创 2020-12-27 02:08:10 · 3435 阅读 · 0 评论 -
信息学奥赛一本通 1011:甲流疫情死亡率 | OpenJudge NOI 1.3 06:甲流疫情死亡率 | 洛谷 B2012 甲流疫情死亡率
一、 题目链接ybt 1011:甲流疫情死亡率OpenJudge NOI 1.3 06:甲流疫情死亡率二、 题目考点一般除法运算 /:被除数÷除数 = 小数商例:5 / 2 = 2.5 , 7 / 2 = 3.5在C++中,两个浮点型量相除,表达式的值就是这两个浮点型量相除的结果,表达式的值也是浮点型量。输出浮点型数字a保留x位小数的写法:cout<<fixed<<setprecision(x)<<a;printf("%.xf", a);print原创 2020-12-25 04:13:45 · 5486 阅读 · 0 评论 -
信息学奥赛一本通 1010:计算分数的浮点数值 | OpenJudge NOI 1.3 05:计算分数的浮点数值 | 洛谷 B2011 计算分数的浮点数值
一、 题目链接ybt 1010:计算分数的浮点数值OpenJudge NOI 1.3 05:计算分数的浮点数值二、 题目考点一般除法运算 /:被除数 ÷ 除数 = 小数商例:5 / 2 = 2.5 , 7 / 2 = 3.5在C++中,两个浮点型量相除,表达式的值就是这两个浮点型量相除的结果,表达式的值也是浮点型量。浮点型量的精度float 单精度浮点型,可以表示6~7位有效数字double 双精度浮点型,可以表示15~16位有效数字该题要保留到小数点后9位,只能用双精度浮点型量计算原创 2020-12-25 03:10:18 · 4137 阅读 · 3 评论 -
信息学奥赛一本通 1008:计算(a+b)/c的值 | OpenJudge NOI 1.3 03:计算(a+b)/c的值 | 洛谷 B2009 计算 (a+b)/c 的值
一、 题目链接ybt 1008:计算(a+b)/c的值OpenJudge NOI 1.3 03:计算(a+b)/c的值二、 题目考点表达式概念单独一个常量或变量是一个表达式,如a,’*’,“Hello”由运算符将表达式连接起来,整体还是一个表达式,如a+b,2+3每个表达式都有唯一的值,而且表达式的值有对应的类型运算符 + /小括号()可以改变计算顺序,和数学中的括号一样。输出表达式的值整除运算:当将除法写为:被除数÷除数=商……余数 时 整除运算的结果就是除法得到的商,不考虑余数原创 2020-12-25 02:34:03 · 2133 阅读 · 1 评论 -
信息学奥赛一本通 1007:计算(a+b)×c的值 | OpenJudge NOI 1.3 02:计算(a+b)*c的值 | 洛谷 B2008 计算 (a+b)×c 的值
一、 题目链接ybt 1007:计算(a+b)×c的值OpenJudge NOI 1.3 02:计算(a+b)*c的值二、 题目考点表达式概念单独一个常量或变量是一个表达式,如a,’*’,“Hello”由运算符将表达式连接起来,整体还是一个表达式,如a+b,2+3每个表达式都有唯一的值,而且表达式的值有对应的类型运算符 + *小括号()可以改变计算顺序,和数学中的括号一样。输出表达式的值三、题解代码解法1:使用cin, cout进行输入输出#include<bits/st原创 2020-12-25 02:17:37 · 2490 阅读 · 0 评论 -
信息学奥赛一本通 1005:地球人口承载力估计| OpenJudge NOI 小学奥数 7653 | 洛谷 B2006 地球人口承载力估计
一、 题目链接ybt 1005:地球人口承载力估计OpenJudge NOI 小学奥数 7653:地球人口承载力估计二、 题目考点保留x位小数输出浮点型数字a的写法:cout<<fixed<<setprecision(x)<<aprintf("%.xd", a);声明浮点型变量,单精度浮点型float,双精度浮点型double输入输出浮点型变量本题考查列方程及解方程三、解题思路已知地球上现有资源加上新生资源可供x亿人生活a年,或供y亿人生活b年,原创 2020-12-25 01:41:58 · 6700 阅读 · 1 评论 -
信息学奥赛一本通 1004:字符三角形 | OpenJudge NOI 1.1 08:字符三角形 | 洛谷 B2005 字符三角形
一、 题目链接ybt 1004:字符三角形OpenJudge NOI 1.1 08:字符三角形二、 题目考点声明字符型变量 char a;cin输出字符型变量 cin>>a;cout后用<<分割要输出的量,可以混合输出字符常量(如’ '),字符串常量(如" "),字符型变量等。cout输出endl,可以换行。cout<<endl;(endl是C++标准库中的操控器)字符型变量的格式控制说明符是%c,scanf输入字符型变量:scanf("%c", &原创 2020-12-25 01:14:53 · 5900 阅读 · 2 评论 -
信息学奥赛一本通 1003:对齐输出 | OpenJudge NOI 1.1 03:对齐输出 | 洛谷 B2004 对齐输出
一、 题目链接ybt 1003:对齐输出OpenJudge NOI 1.1 03:对齐输出二、 题目考点cout在宽度为8的范围内输出变量a并右对齐cout<<setw(8)<<a;cout后某处接setw(x),指明setw()后面直接连接的变量会在宽度为x的范围内右对齐输出。setw()只能作用于其后直接连接的变量,若想让多个变量都在某范围内右对齐输出,则需要在每个变量前都加上setw();printf在宽度为8的范围内输出变量a并右对齐printf("%8d原创 2020-12-25 00:36:29 · 6332 阅读 · 7 评论 -
洛谷 P1390 公约数的和
本文研究了洛谷P1390公约数求和问题,提出了两种解法。解法1直接计算数对(i,j)的最大公约数之和,时间复杂度O(nlogn),通过枚举公约数d并利用欧拉函数性质求解。解法2先计算整个矩阵的公约数和,再利用对称性转化为上三角矩阵求和,时间复杂度O(n),效率更高。两种方法都基于线性筛预处理欧拉函数,其中解法2通过数学推导简化了计算过程,最终结果为(总和-对角线元素和)/2。代码实现展示了两种解法的具体操作步骤。原创 2025-11-21 00:38:46 · 797 阅读 · 0 评论 -
信息学奥赛一本通 1629:聪明的燕姿 | 洛谷 P4397 [JLOI2014] 聪明的燕姿
摘要: 题目要求找出所有约数和为给定值S的正整数x。基于算术基本定理,x的约数和可表示为质因数幂次和的乘积。通过深度优先搜索,枚举质因数的可能组合,逐步分解S。当剩余部分为1时保存结果,若剩余部分减1为质数则视为有效解。预处理小于50000的质数优化搜索效率,最后排序输出结果。算法高效处理x≤2×10^9的情况,确保在合理时间内完成。原创 2025-11-20 00:05:05 · 620 阅读 · 0 评论 -
洛谷 P2398 GCD SUM
摘要 本文研究了洛谷P2398题"GCD SUM",通过数论中的欧拉函数性质,将双重求和问题转化为单重求和问题。利用欧拉函数的性质n=∑φ(d)(d|n),将原问题转换为∑(⌊n/d⌋²·φ(d)),其中1≤d≤n。采用线性筛法高效预处理1到n的欧拉函数值,算法复杂度为O(n)。最终实现简洁高效,仅需遍历一次即可求得结果。该解法展示了数论知识在实际问题中的应用价值,特别适合处理大规模数据情况下的gcd求和问题。原创 2025-11-18 22:12:02 · 852 阅读 · 0 评论 -
洛谷 P4549 【模板】裴蜀定理
本文介绍了裴蜀定理及其推广形式,并给出洛谷P4549题的解题思路与代码实现。该题要求求出给定整数序列的最小正整数线性组合,根据裴蜀定理,这个最小值就是所有数的最大公约数。解法通过处理负数输入,逐步计算序列的最大公约数,最终输出结果。关键点在于正确实现gcd函数并处理边界情况。原创 2025-11-17 21:20:35 · 700 阅读 · 0 评论 -
信息学奥赛一本通 1002:输出第二个整数 | OpenJudge NOI 1.1 02:输出第二个整数 | 洛谷 B2003 输出第二个整数
一、 题目链接ybt 1002:输出第二个整数OpenJudge NOI 1.1 02:输出第二个整数二、 题目考点声明多个int型变量cin输入变量cin 后面用>>分隔要输入的多个变量。cout输出变量cout 后面用<<分隔要输出的多个变量。scanf输入变量scanf(格式控制字符串,变量1地址,变量2地址…); 第一个参数是个字符串,其中要输入到变量的地方用格式控制说明符代替(如%d)。注意,后面要填入的是要输入变量的地址,取地址操作是&,原创 2020-12-25 00:08:39 · 4488 阅读 · 0 评论 -
信息学奥赛一本通 1625:【例 1】反素数 Antiprime | 洛谷 P1463 [POI 2001 R1 / HAOI2007] 反素数
题目要求找出不超过给定n的最大反素数x,即x是1~n中约数个数最多的数中最小的那个。反素数的质因数分解满足指数不升序列的性质。解题思路是利用深搜回溯算法,依次确定前9个质数的指数,确保乘积不超过n且指数递减,记录约数个数最多的最小数值。算法时间复杂度低,适用于n高达2*10^9的情况。最终通过深搜得到的最小满足条件的数即为所求的反素数。原创 2025-11-12 21:36:31 · 789 阅读 · 0 评论 -
信息学奥赛一本通 1624:樱花 | 洛谷 P1445 [Violet] 樱花
本文研究了求解方程1/x + 1/y = 1/n!正整数解的问题。通过变形方程,证明解的数量等于(n!)^2的约数个数。提出了三种解法:1)直接分解质因数统计指数;2)线性筛保存最小质因数加速分解;3)利用质数幂次统计质因数出现次数。三种方法的时间复杂度分别为O(nloglogn)、O(nloglogn)和O(n)。最终通过计算(n!)^2的质因数指数,利用算术基本定理得出约数个数即为方程解的个数。原创 2025-11-12 17:33:11 · 735 阅读 · 0 评论
分享