- 博客(5)
- 收藏
- 关注
原创 用vector容器解 洛谷P1059:明明的随机数
unique函数的工作原理是“保留第一个出现的元素,覆盖后续与之重复的元素”,但不会真正删除元素,而是通过不断地将后面不重复的元素覆盖前面重复的元素,确保动态数组的前面几个元素连续不重复,后面会遗留一些未知值(这里的“未知”不是说计算机随机生成,而是说根据unique函数工作原理,会残留这些重复的数字),因此为了达到“去重”的目的,我们需要删除这些未知值。我们用迭代器last指向unique函数返回的“最后一个不重复元素的下一个位置”的坐标,再借助erase将这一部分删除掉就达到了“去重”的目的。
2025-09-03 14:38:19
381
原创 什么表达式可以作为while循环的循环条件?
obj是Myclass类的对象,因为Myclass中有重载的布尔转换运算符(operator bool()),所以当执行 while (obj) 时(即obj作为while循环的循环条件时),编译器会自动调用 obj.operator bool() 这个成员函数。当表达式的值为false(0)时,循环结束。另外,由于while循环的条件表达式会被求值,进行循环是否会结束的条件判断,并且每次循环都会重新求值,所以要确保条件表达式的值能够随着循环的进行而改变,否则可能会导致死循环。
2025-08-27 11:04:10
1229
1
原创 洛谷P1996 约瑟夫问题 题解(C++)
题目描述题目描述n 个人围成一圈,从第一个人开始报数,数到 m 的人出列,再由下一个人重新从 1 开始报数,数到 m 的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。输入两个整数n,m。输出格式输出一行 n 个整数,按顺序输出每个出圈人的编号。输入输出样例输入#110 3输出#1说明/提示1≤m,n≤100题解本题目我们需要通过代码来模拟以下过程:编号1~n的人围成一个圈,自编号为1的人开始从1报数,报到m就出列。
2025-08-23 10:00:20
578
原创 洛谷P2084 进制转换 题解(C++)
今天小明学会了进制转换,比如,那么它的十进制表示的式子就是 :那么请你编程实现,将一个 M 进制的数 N 转换成十进制表示的式子。注意:当系数为 0 时,该单项式要省略。
2025-08-22 21:04:15
890
原创 洛谷P1304 哥德巴赫猜想 题解(C++)
这段摘要描述了如何验证哥德巴赫猜想(4到N的所有偶数可表示为两个质数之和)的程序实现。文章给出了C++代码示例,重点介绍了优化的素数判断方法:通过检查2到√n范围内的因数代替暴力检查所有数,将时间复杂度从O(n)降为O(√n)。同时解释了素数的数学定义和这种优化的数学依据,说明学习数论知识对算法优化的重要性。程序会输出每个偶数的最小质数组合形式(如10=3+7而非5+5)。
2025-08-21 10:20:13
389
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅