自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 k倍区间

摘要:本文讨论如何高效计算给定数列中连续子序列之和为K的倍数的区间个数。利用前缀和与同余定理,通过统计前缀和模K的余数出现次数来优化计算。具体步骤包括:初始化前缀和为0,余数0出现1次;遍历数列时更新前缀和及其余数,若相同余数已存在,则其差值必为K的倍数,从而形成新的K倍区间。最终时间复杂度为O(N),适用于大规模数据。示例说明当K=3时,通过前缀和余数匹配可快速确定有效区间。

2025-12-30 11:10:24 304

原创 最大不可组合数计算方法

根据数论中的结论,对于两个互质的正整数a和b,最大不能组合出的数字是a*b - a - b。当a=4, b=7时:4×7 - 4 - 7 = 28 - 11 = 17。当a=3, b=5时:3×5 - 3 - 5 = 15 - 8 = 7。// 使用公式:最大不能组合数 = a*b - a - b。任何大于等于(a-1)*(b-1)的数都可以表示为a和b的线性组合。这就是著名的"硬币问题"或"Frobenius硬币问题"的二元情况。最大不能组合出的数字就是a*b - a - b。

2025-11-02 13:29:50 263

原创 奇怪的捐赠

摘要:将100万元分成7的幂次方金额(如1元、7元等),每份不超过5次,求最多份数。解题关键是将金额转换为7进制数,各位数字之和即为最大份数。经计算,1,000,000的7进制表示为11333311₇,各位之和为16,故最多可分16份。

2025-10-11 22:23:03 269

原创 先有鸡还是先有蛋

摘要:本文探讨如何通过给定的n、m、x、y值推断小明关于"鸡和蛋"问题的答案。通过建立变量a、b、c、d表示不同情况的人数,并分析两种可能答案(鸡或蛋)对应的方程组,判断哪种情况满足非负整数解。若两种情况都满足输出"Ambiguous",仅一种满足输出对应答案,否则输出"The oracle is a lie"。代码实现了这一逻辑判断过程。

2025-10-11 21:34:26 1513

原创 整数排序拼接最大数字

这段C代码实现了一种特殊的数字排序算法,旨在将一组整数重新排列组合成最大的可能数值。核心是自定义比较函数:通过将数字两两组合成字符串(如a+b和b+a),用strcmp比较这两种组合方式,按字符串降序排列(strcmp(str2,str1))。程序先读取n个整数,用qsort按此规则排序后输出。例如输入[3,30]会排序为[30,3]形成"303"而非"330"。该方法巧妙利用字符串比较替代数值比较,确保拼接结果最大化。关键记忆点:字符串逆序比较(str2,str1)

2025-10-07 15:37:23 334

原创 字符串的比较

字符串比较是基于字符的 ASCII 码值逐个比较,而不是数值大小。:"9" > "111"(按字典顺序)

2025-10-07 01:14:08 406

原创 压缩字符串

/ 请在此输入您的代码int b=0;i<len1;){count++;i++;

2025-10-05 15:05:07 1599

原创 fgets 和 scanf 在输入字符串时有几个重要区别:

C语言中scanf和fgets函数在输入处理上有显著差异:scanf遇到空格会停止读取,不处理换行符;而fgets会读取包括空格和换行符在内的所有字符。fgets自动限制输入长度防止溢出,返回字符串指针,而scanf需手动指定宽度并返回成功读取项数。使用fgets时通常需要移除结尾的换行符,可通过检查末字符是否为'\n'并替换为'\0'来实现。

2025-10-05 12:10:40 190

原创 确定字符串是否是另一个的排列

这篇文章介绍了一个C语言程序,用于判断两个输入字符串是否为变位词。程序首先读取两个字符串,去除换行符后检查长度是否相同。接着使用两个256大小的数组统计每个字符出现频率,最后比较频率数组。程序通过长度检查和字符频率统计来高效判断字符串是否为变位词,时间复杂度为O(n),空间复杂度为O(1)。该算法适用于所有ASCII字符,并考虑了输入安全性和边界情况。

2025-10-05 11:54:01 1547

原创 确定字符串是否包含唯一字符

这段C语言代码实现了一个判断字符串中字符是否唯一的程序。它通过128位的标记数组flag来高效跟踪字符出现情况,利用字符的ASCII值作为直接索引(O(1)时间复杂度)。程序使用fgets读取最多100个字符,然后遍历字符串检查每个字符是否已在flag数组中标记过。若发现重复字符立即输出"NO"并终止,否则遍历完输出"YES"。该方法通过数组索引直接访问实现高效查重,是处理字符唯一性问题的经典解决方案。

2025-10-03 17:10:01 310

原创 翁恺老师C语言:字符串输入输出笔记

若在scanf时,在%和s之间加上数字,那么就不用tab来区分单词,而是按照个数来区分单词,即输入字符串就无需用tab隔开,接下去的内容会交给下一个scanf。

2025-10-03 12:08:02 134

原创 翁恺老师C语言:字符串笔记

字符串是数组,以下变量都是字符数组变量,只不过是不同表现形式char line[10] 表示数组的空间是10个字节,实际上Hello五个字符在line里面占据了6个字节的空间,包括了最后的’\0’,千万要记住你写出的字符串的字面量表达形式“Hello”,计算机会在给你自动生成结尾的0。

2025-10-01 17:11:05 210

原创 翁恺老师C语言:动态内存分配笔记

本文简要介绍了C语言中malloc动态内存分配的基本原理和使用场景。malloc用于在运行时申请不确定大小的内存空间,其返回的地址需要进行类型转换。文章通过示例代码说明了如何通过循环持续不断地申请内存,并强调了内存管理的三个要点:1)每次malloc后必须对应free;2)程序结构要合理以保证内存及时释放;3)需要通过实践来掌握内存管理技巧。最后指出内存空间是有限的,并建议通过测试程序来了解系统能分配的最大内存量。

2025-09-30 21:56:28 241

原创 翁恺老师C语言:指针的运算笔记

在32位和64位系统中,int通常占4字节,char占1字节。指针运算中,p+1根据指针类型增加对应字节数:对于char*指针p,p+1增加1字节;对于其他类型指针q,p+1增加sizeof(指向类型)的字节数。指针运算的单位由指针类型决定。

2025-09-28 15:40:45 124

原创 学习完王道老师的计算机组成原理,我对进制有了更加深刻的理解

这篇文章介绍了计算机中数制转换的基本原理和方法。主要内容包括:1)r进制转十进制的方法,通过基数和位权计算;2)二进制与八/十六进制的转换规则,采用分组对应方式;3)十进制转r进制的技巧,整数部分取余、小数部分取整;4)机器数的表示概念,即数字化的正负号表示。这些内容是理解计算机数据表示和运算的基础知识。

2025-09-27 16:56:19 265

原创 分享一下翁恺老师的指针小测验9.1我的错题

这段C语言代码展示了指针运算的特性。定义int类型指针p并赋值为数组a[5]的地址后,通过指针偏移访问数组元素:p[0]等价于a[5],值为2;p[-1]对应a[4],值为14;p[-2]对应a[3],值为54。这体现了指针运算与数组索引的关系,说明指针可以通过正负偏移来访问数组元素。

2025-09-26 17:05:20 129

空空如也

空空如也

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

TA关注的人

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