spoj 4168. Square-free integers(容斥)

该博客介绍了如何利用容斥原理解决Spoj上的SQFREE问题,即找出1到n(n<=10^14)之间不被任何完全平方数整除的数的数量。通过计算至少被一个完全平方数整除的数的个数,然后排除重复的部分,博主详细阐述了枚举完全平方数并考虑质因子个数奇偶性的方法,同时提到预处理每个数的质因子个数以优化算法。
摘要由CSDN通过智能技术生成

http://www.spoj.com/problems/SQFREE/


求出1~n(n <= 10^14)内不被任意一个完全平方数整除的数的个数。


同样的,考虑问题的逆问题,就是至少能被一个完全平方数整除的数的个数。所以答案就是 n - ( 1~n内完全平方数的倍数的个数 )。


所以可以枚举i( 2 <= i <= sqrt(n) ),i*i是一个完全平方数,那么能被i*i整除的数的个数为 n / (i*i)。显然里面有重复的,例如4,9,和36,

36就被多计算的一次,所以减掉,就是容斥。 和上题类似,看i的质因子数是奇数还是偶数,是奇数就加上,偶数就减掉,注意i的质因子不能有重复的。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值