- 博客(21)
- 收藏
- 关注
原创 c++ long long在位运算时的注意事项
仔细想了想,原来c++默认数都是int,n>>=1这条语句等价于n=n>>1,n>>1默认int,当n>>1(即n/2)超过int范围时会溢出,因此要强制将n>>1转换成long long。(n&1虽是long long参与了位运算,但因为其值只会是0或1,不会溢出,由此可以看出并不是long long参与位运算会溢出,而是位运算结果超过int才会溢出,比如1<<40)每次操作要么把它乘以 2,要么把它加上 1,请问至少几次操作可以让它恰好等于 n。显然这题是贪心,n是偶数就除以二,奇数就减一。
2024-10-25 17:02:04
230
原创 《增强做题信心的方法》
UKE=Unbelievable Keep Enough(Score)难以置信地保持足够的(分数)MLE=Memory Limit Enough=内存充裕。OLE=Output Limit Enough=输出充裕。CE=Compile Easily=轻而易举地通过编译。TLE=Time Limit Enough=时间充裕。WA=Wonderful Answer=精彩的答案。AC=Answer Coarse=粗劣的答案。RE=Run Easily=轻松地运行。
2024-08-25 11:34:18
309
原创 c++优化运行速度
题目会给出数据范围,能用short不用int,能用int不用long long,能用float不用double(运算时间不同)inline在函数调用次数多的时候很有用,可以提高小函数的运行效率,减少函数调用的开销(记忆化搜索和dfs狂喜。2.解绑(解绑之后不能使用printf和scanf,输出换行不能用endl,只能用"\n")这段代码用于加速cincout,使其速度跟scanf,printf差不多(其实还是略慢一点)顺便说一下即使没解绑最好也别用endl,它的速度远不如"\n"
2024-08-25 11:20:49
335
原创 [普及]连续数字的和
输出可能有多行,每行两个正整数 l 和 r ,用空格隔开,表示从 l 到 r (包括 l 和 r )的所有数字之和为 n。对于一个正整数n,我们可以找到一些连续的数字使其累加起来的和刚好等于n,比如对于数字15,就是1到5之间所有数字的和。此题使用前缀和可得到大概70的分数,但是想得到满分,还需要一点优化,让程序不要进行一些不必要的循环。题目数据保证有解,如果有多个结果,你需要输出多行,并且是按照 l 从小到大顺序输出的。一个数字 n ,当然 n 可能会很大。
2024-08-25 10:26:40
345
原创 回文质数(c++)
给定正整数 a,b (5<a<b<10^8),求a~b之间(包含端点)的所有回文质数,输出一个换一行。若一个数既是回文数(从左往右读相同),且这个数是质数,则称这个数是回文质数。因为在&&中,只要第一个不对就直接跳,避免了过多的质数判断,这要注意。倒数第六行两个判断位置交换了,却有不同的效果。先上一段错误代码(20%TLE )
2024-03-15 23:17:08
718
1
原创 求[2,n]区间的所有质数 c++质数筛法(埃氏筛)
埃氏筛是一种快速求出2~n区间内的质数的算法。直接枚举判断100% TLE,必须用埃氏筛。它的基本思想是将合数筛掉,剩下的就是质数。求[2,n]区间的所有质数。
2024-02-19 19:07:49
234
1
原创 [AHOI2005]约数研究
科学家们在 Samuel 星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机 Samuel II 的长时间运算成为了可能。由于在去年一年的辛苦工作取得了不错的成绩,小联被允许用 Samuel II 进行数学研究。小联最近在研究和约数有关的问题,他统计每个正数 N 的约数的个数,并以 f(N) 来表示。现在请你求出:f(1)+f(2)+···+f(n-1)+f(n)的值。输出f(1)+f(2)+···+f(n-1)+f(n)的值。1的因数个数是1,2是2,3是2.1,2,3,4,6,12,因此。
2024-02-19 18:47:13
241
1
原创 蓝桥杯国赛真题 求阶乘
例如:输入为 3,1 的阶乘为 1, 2 的阶乘为 2,3 的阶乘为 6,1+2+6=9,则输出 9。输入一个正整数 N(3≤N≤20),输出 1 到 N 之间(包含 1 和 N)所有正整数阶乘的和。提示信息:阶乘定义:一个正整数的阶乘是所有小于及等于该数的正整数的乘积。输出 1 到 N 之间(包含 1 和 N)所有正整数阶乘的和。输入一个正整数 N(3≤20≤N≤20)暴力法 O(n^2)递推优化 O(n)
2024-02-19 16:21:37
535
1
转载 [普及][CSP-J2020] 优秀的拆分
对于正整数 n 的一种特定拆分,我们称它为“优秀的”,当且仅当在这种拆分下,n 被分解为了若干个不同的 2 的正整数次幂。例如,10=8+2=2^3+2^1是一个优秀的拆分。但是,7=4+2+1=2^2+2^1+2^0就不是一个优秀的拆分,因为 1 不是 2 的正整数次幂。样例 1 解释 6=4+2=2^2+2^1是一个优秀的拆分。注意,6=2+2+2不是一个优秀的拆分,因为拆分成的 3 个数不满足每个数互不相同。现在,给定正整数 n,你需要判断这个数的所有拆分中,是否存在优秀的拆分。
2024-02-14 16:09:46
338
1
原创 c++ 大整数的实现
其实有更高效的储存方式,使用unsighed int(2^32)的大数数组就比较好,大家可以自己试试。这个大整数是用char储存的,非常简单,就没写乘除了,原理就是竖式计算。
2024-02-14 15:21:28
260
1
原创 超级素数 蓝桥杯中级组选拔赛
超级素数是指一个素数,每去掉最后一位上一个数字,总能保证剩下的数依然为素数。1 和它本身以外不再有其他因数的数,被称为素数,又叫质数。第 11 届蓝桥杯青少组 C++ 选拔赛中级组。思路:题目不难,用埃氏筛会更快,但没必要。373 就是一个超级素数,去掉个位的。输出一个整数,表示所有小于等于。注意判断时要剪枝,不然会TLE。37 依然是素数:继续去掉。1 的自然数中,除了。n 的超级素数的个数。
2024-02-13 17:58:59
387
原创 《古诗四首》
化而为long,其名为鹏。鹏之大,内存会爆炸。北冥有鱼,其名为鲲。鲲之大,int存不下。TLE、MLE,WA将出换AC,与尔同销万古愁!君不见,高堂明镜悲WA,朝如TLE暮RE。君不见,OI之题天上来,复杂到海不复回。AC一点且为乐,会须一刷三百WA。吾蒟蒻,牛大佬, 将刷题,手莫停,人生WA须尽思,莫使电脑空对题。终日WA不足贵,但愿AC不复醒,古来大佬皆刷题,惟有蒟蒻抄题解。大佬昔时百AC,斗题十千恣欢谑。穷举TLE,递推UKE。模拟MLE,贪心还CE。想要骗到分,就要有方法。图论背模板,数论背公式。
2024-02-12 22:12:52
395
1
原创 c++ 结构体的实现
你可能会想,这也没简单多少啊,那我们现在把题目修改一下,要输入的不仅是学生的姓名和分数,而是姓名,分数,年龄,身高,体重,所在国家、城市、地区,这下要按分数排序,该怎么办呢?对比一下,不用结构体时,一共用了57行,而且有一大段冗长的交换,用于排序的代码足足有27行,很容易出错,而用了结构体后一共只用了40行,排序核心代码只有6行。有n名同学(n≤100),每个人分别得了k分,把他们按分数从大到小排列。这里冒泡排序的交换实在是太多了,很繁琐而且容易出错。struct 结构体名。
2023-09-09 14:57:28
121
1
原创 c++质因数分解代码
while(n%i==0) //注意一个数的质因数可能有重复,例如12=2*2*3。//特别注意1不是质数,枚举判断时1会被漏掉。bool prime(int a) //质数判断。
2023-08-22 19:14:32
567
1
原创 用深度优先搜索求走迷宫的最短路径(c++)
/开始搜索(这里因为数组的起始下标为0,所以startx和starty都要减一)if(tx>m-1 || ty>m-1 || tx
2023-08-21 19:26:13
355
1
原创 用c++求一个实数x的y次方根(进阶版)
/这里主要是为了防止得数太大而被转化成用科学计数法表示(这样不直观)double binarySearch(double x,int y,double low,double high)//二分查找算法。主要是因为对于大于一万亿的数比较慢,现在又用二分算法对上次的递归进行了优化。上次那个算上次那个算法其实已经很不错了,但我还发现了一个更快的。
2023-08-17 14:01:48
122
1
原创 用c++求一个实数x的y次方根(y为正整数且当y为偶数时,x≥0)
/这里n的值要形为10的x次方(x为≥0的整数),越大就越快,不必担心会变慢,因为例如这里n为100万,即使整数位为1也只需要log10 1000000=7次计算,这是为了防止被开方的数太大而导致过慢。还做了一个求实数x的y次方根(y为正整数,且当y为偶数时,x≥0)的算法。这次将上次发的平方根算法改进了一下,代码更简明,接下来就是求一个实数x的y次方根的算法了。
2023-08-16 20:47:00
154
1
原创 Python 函数图像
turtle.pensize=(0.0001) #笔的粗细。eps=0.001#这个极小值在一次函数中可以设为1。return 1/x #随意修改函数就行了。return x*x#随意修改函数就行了。turtle.speed=(0) #速度。i=0.3 #初始化 注意i为0会报错。import math #导入模块。eps=0.001 #定义极小值。i=0#这里可以为0。
2023-07-29 17:03:38
79
原创 Python冒泡排序
a=list(map(int,input().split()))def swap(a,b): return b,adef bobblesort_True(a):#升序 for j in range(0,len(a)-1): for i in range(0,len(a)-1):#遍历两次 if a[i]>a[i+1]:#如果顺序不对就交换 a[i],a[i+1]=swap(a[i],a[i+1])def bobbl
2023-07-29 15:33:20
47
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人