HDU 6169 Senior PanⅡ 数论+DP

题目要求找到区间[L,R]内所有最小因子为K的数之和,当K非素数时无解。通过讨论K的素数性和大小限制,确定只需计算K<=320000的情况。利用动态规划dp[i][j]表示前i个数被前j个素数筛过后剩余的数的和,递推公式为dp[i][j]=dp[i][j-1]-pri[j]*dp[i/pri[j]][j-1]。最后的答案为K*dp[R/K][cnt]-K*dp[(L-1)/K][cnt]。评论区dalao提供了剪枝优化思路,当n<=pri[m]时,dp[n][m]=1,提高了算法效率。" 104010434,8754567,Java集合队列与LRU缓存机制,"['java', '数据结构', '算法', '缓存', '队列']
摘要由CSDN通过智能技术生成

题目链接


题意:给定区间 [ L , R ] [L,R] [L,R]和一个整数 K K K,问区间内所有满足其最小因子( 1 1 1除外)为 K K K的数的和。
限制: L , R , K ( &lt; = 1 e 11 ) L,R,K(&lt;=1e11) L,R,K(<=1e11)


思路:
首先考虑当 K K K不是素数时,其一定可以分解为更小的数的乘积,这样任何以 K K K为因子的数的最小因子一定不是 K K K,故直接特判 0 0 0

然后考虑 K K K的大小的限制。
对于任意一个 [ L , R ] [L,R] [L,R]的区间,令 P P P为大于等于 K K K的第一个素数,则当:
R &lt; P ∗ K R &lt; P*K R<PK时,最多只有 K K K这一个数满足条件,故此时只需要判断一下 K K K是否在该区间内。

P P P约等于 K K K,而 R &lt; = 1 e 11 R&lt;=1e11 R<=1e11,故当 K &gt; 1 e 11 ≈ 320000 K &gt; \sqrt{ 1e11} \approx 320000 K>1e11

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值