- 博客(11)
- 收藏
- 关注
原创 蓝桥杯国赛刷题第四题
若 m 是质数,且 a 不是 m 的倍数,根据费马小定理 a**(m-1)≡1(mod m),那么 a 在模 m 意义下的乘法逆元就是a**m-2≡1(mod m)。x 就是 a 在模 m 意义下的乘法逆元。前提是 a 和 m 互质(即 (gcd(a, m) = 1))【如果是a**b≡1(mod m)这个b就是阶数了 也就是欧拉定理】那么称为b 是 a 在模 m 意义下的乘法逆元。所以扩展欧几里得算法是有普遍性的。使得a*b≡1(mod m)也就意味着a*b-1=k*m。也就是 a*b%m=1。
2025-05-03 21:55:04
177
原创 蓝桥杯国赛刷题记录第三题
当初在考场上看见这题时,以为怎么这么简单,不就是对折,然后贪心吗?现在发现,原来不一定是对折比如8可以分割成1,7。然后今天试了一下,过了...百分之零。现在回过神来,发现可以用二分答案。这个x可以设定为最长情况。怪不得上一年参与奖呢。
2025-05-01 20:56:07
251
原创 蓝桥杯国赛刷题记录第二题
但我后来思考了一下,最大间距应该只需要算a里面最大值和最小值即可。也就是各个点,距离a里面最大点和最小点的距离就行了。思路如下,也就是每个点距离a各个点的最大间距。那么时间复杂度从o(n*m)变成了o(2*n)这个代码只过了百分之85。
2025-05-01 18:41:27
187
原创 蓝桥杯国赛刷题记录第一题
如果是重复的比较多,比如 3 5 6 6 6 6 6 6,需要改变的次数是 4次。那么我们只需要设置flag1和flag2 看一下重复的有多少个,不重复的有多少个。也就是第一个6变成3 第二个6变成5 后面两个6 随便变成另一个数字。但其实不是这样,改变次数应该是2 把一个6改成3 把一个 6改成5。6 6 6 这几个是肯定要变的,和3 5 4 8 7随便对应一个。如果是单的比较多,比如3 5 4 8 7 6 6 6 6 6。那么是不是要变6 6 6 3 5 4 8 7。比如3 5 6 6 6 6。
2025-05-01 14:32:52
245
原创 从零开始备战蓝桥杯——一天一个小算法4(位运算&篇)
例如,假设集合A={1, 2, 3, 4},集合B={3, 4, 5},那么A & B表示A和B的交集,即{3, 4}。对于每一个位,只有当两个二进制数的对应位都为1时,结果位才为1,否则结果位为0。首先我们先申明一个概念在计算机中1大多代表存在的意思,于是我们可以定义一个二进制数为(1001),而它所对应的集合为{0,3}。以你给出的例子为例,a的二进制数为1101,b的二进制数为0101。(即十进制的8),因为每一位都向右移动了一位,最左侧的位(即最高位)被丢弃,而在最右侧新增了一位0。
2024-07-24 22:34:03
988
原创 MATLAB与数学建模保姆级零基础入门(第一天)
整数,字符串,浮点数等与python相似,可以直接进行赋值,而输出的话就如图中f代表float浮点型,d代表int表示整型,而2则是表示保留两位小数可以修改成其他数字也就是保留几位小数。如果你觉得命令号窗口东西太多,乱了你的眼,你可以在命令行窗口中输入clc并按enter,这样就会进行清空命令行窗口。当你直接点击运行时候,会运行所有没有封号的内容,而工作区的变量名如果一样只会保留最后运行的变量名的变量值。在编辑器中你可以写下你的第一行代码,然后点击上面的运行按钮,运行后命令行窗口,与工作区就会如图所示。
2024-07-20 17:04:20
2435
原创 从零开始备战蓝桥杯——一天一个小算法第二天(排序篇)
随后我们再将基准值的数字与3进行换位,(为什么不是将小于基准值的数字插入前面呢,因为这样的时间复杂度太高了。因为3小于四所以要进行换位,将3移动到idx的位置而idx上的数字移动到3的数字,随后idx+1再往后判断有没有数字小于基准值4进行换位。我们只需要将第i张牌与[0,i-1]里的牌进行大小比较,再进行插入即可,而其中[0,i-1]的牌是进行从后往前遍历的。OK今天的算法内容就到这了,今天是学算法的第二天,算法最重要的内容是要多练,你的放弃可能会成就更多的人,我们明天再见。
2024-07-16 09:05:37
2287
原创 从零开始备战蓝桥杯
由于本人于蓝桥杯国赛只拿到优秀奖而感到十分羞愧,因此打算每天从零开始学习一个小算法并且在csdn上面记录打卡来增强自己的记忆力。
2024-07-15 09:42:06
265
原创 从零开始备战蓝桥杯——一天一个小算法第一天(排序篇)
OK今天的算法内容就到这了,今天是学算法的第一天,算法最重要的内容是要多练,你的放弃可能会成就更多的人,我们明天再见。第一次比较遍历全部数字,进行两两比较,小的在前,大的在后,最后最大的数字排在最后数第二的位置。选择排序与冒泡排序相似,可以找出最小的数字或则最大的数字放在最前面或最后面。重复上述操作,依次找到最小,第二小,第三小......。随后从[1,n-1]中找到第二小的数字,放在第二位。首先从[0,n-1]找到最小的数字,放在第一位。两两相邻数字排序,小的放在前面大的放在后面。
2024-07-15 09:03:43
608
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅