T-primes #142DIV2

本文分享了一次解决Codeforces题目过程中遇到的问题及解决方案。作者最初尝试使用枚举法,但未能成功,转而学习并应用了质数筛算法。通过该算法,生成了一个包含所有小于10^12的质数平方的数组,并采用折半查找法进行快速判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一次写博客(之前写过一篇自己给删了,本来是想展示python对缩进的严格要求以至于连注释都要正确缩进,但是复制过来自动给我改正确了,后来发现这一点后就给删掉了),还是记录一下我刷cf的历程吧……小白一只,写给自己看就好。
这道题本来我是用枚举判断…然后无论怎么改都会爆掉,于是看了题解,开始学习质数筛……(本来还以为会是道简单题的)
根据现学的素数定理(在n以内随机选一个数,它是质数的概率约为 1lnn ),我们大约需要一个95000大小的数组来存最后得到的 1012 次方以内的平方数。(最后我生成出来只有78498个,手动做了调整)
然后使用质数筛(利用全局数组vis[]记录是否是质数,对于每个质数将它的倍数们标记为和数),最后得到了含有小于 1012 的所有素数平方的数组,就可以在读入数据之后去判断它到底在不在那个数组里(使用折半查找法 减少运行时间)
代码太丑,不贴了…记一下这些方法什么的……昨晚打比赛有道题想复杂了,后来二测还被刷了……今天下午再来一次…向教室移动……

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值