标签:0015 因式分解 复杂度 所有 因子 sqrt 素数 solve 区间
题目大意:
输出[l,r]直接所有数的因子和
l<=r<=2e12
题目解法:
不要问我为什么要给这种简单题写题解因为我之前还真不会这玩意儿
- r-l<=1e6
这种情况下可以从l循环到r因式分解求解。
注意到我们只需要筛出sqrt(r)的素数表即可。对于一个数n,如果除掉所有1~sqrt(n)的素数后仍有剩余那么剩余部分一定为质数,答案×2即可。
注意在因式分解是我们不应该对于每个数拿所有素数去试这样的复杂度是假的。我们应该在筛素数的时候处理好每个数的质因数,即如果有素数就把该素数在区间内的所有倍数标记上这个因数。这样的复杂度显然只有一个log的。规避了之前那种算法许多冗杂的判断。
- r-l无限制
尝试用solve(r)-solve(l)作为答案。
显然
然后就可以快乐地整除分块(把所有n/i相同的i放在一起算)啦!可以在根号级别的复杂度算完。
标签:0015,因式分解,复杂度,所有,因子,sqrt,素数,solve,区间 来源: https://www.cnblogs.com/myrcella/p/12958218.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。