题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6169

题意:给了区间L,R,求[L,R]区间所有满足其最小质数因子为k的数的和。

解法:

我参考的这篇blog。http://blog.csdn.net/wubaizhe/article/details/77484454#cpp

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL mod = 1e9+7;
const int Mx = 320000;
const int A = Mx + 10;
const int B = 1e4+10;
const int C = 1e2+10;
const LL inv = 500000004;
LL dp[B][C];
//dp[i][j]表示1~i 这 i个数被前j个素数筛过以后剩下的数的和。
//dp[i][j]=dp[i][j−1]−pri[j]∗dp[i/pri[j]][j−1]
int prime[A],tot;
bool isprime[A];
void predeal(){tot=0;memset(isprime, 1, sizeof(isprime));for(LL i=2; i<A; i++){if(isprime[i]){for(LL j=i+i; j<A; j+=i){isprime[j]=0;}}}for(int i=2; i<A; i++){if(isprime[i]) prime[++tot] = i;}for(int i=1; i<B; i++){dp[i][0] = 1LL*i*(i+1)/2%mod;for(int j=1; j<C; j++){dp[i][j] = (dp[i][j-1] -  prime[j]*dp[i/prime[j]][j-1]%mod + mod)%mod;}}
}
LL dfs(LL n, LL m)
{if(n<=1) return n;if(!m) return n%mod*(n%mod+1)%mod*inv%mod;if(n<B&&m<C) return dp[n][m];if(prime[m]>n) return 1;return (dfs(n,m-1)-prime[m]*dfs(n/prime[m],m-1)%mod+mod)%mod;
}
bool check(LL x){for(LL i=2; i*i<=x; i++){if(x%i==0){return false;}}return true;
}
int main()
{predeal();int T,ks=0;scanf("%d", &T);while(T--){LL L,R,k;scanf("%lld%lld%lld", &L,&R,&k);printf("Case #%d: ", ++ks);if(!check(k)){puts("0");}else if(k>Mx){if(L<=k&&k<=R) printf("%lld\n",k%mod);else puts("0");}else{int now=0;while(prime[now+1]<k) now++;LL ans = (dfs(R/k,now)*k%mod-dfs((L-1)/k,now)*k%mod + mod)%mod;if(ans < 0) ans+=mod;printf("%lld\n", ans);}}return 0;
}

转载于:https://www.cnblogs.com/spfa/p/7420374.html

2017多校第9场 HDU 6169 Senior PanⅡ 数论,DP,爆搜相关推荐

  1. HDU 6169 Senior PanⅡ 数论+DP

    题目链接 题意:给定区间[L,R][L,R][L,R]和一个整数KKK,问区间内所有满足其最小因子(111除外)为KKK的数的和. 限制:L,R,K(<=1e11)L,R,K(<=1e11 ...

  2. HDU - 6169 Senior PanⅡ(dp+数论)

    题目大意: 多组测试数据,每组给你三个数:l,r,k;让你输出区间 [ l , r ] 内所有最小不为 1 的因数是 k 的数的和.(l,r,k≤1011)(l,r,k \le 10^{11}) 分析 ...

  3. 2017多校第3场 HDU 6058 Kanade's sum 双链表,思维

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6058 题外话:这场多校,真心感觉自己的无力,全队都发挥的很差,结束的时候排名掉到了90多,后期没做出字 ...

  4. 2017多校第4场 HDU 6078 Wavel Sequence DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6078 题意:求两个序列的公共波形子序列的个数. 解法: 类似于最长公共上升子序列,对于每个i,只考虑存 ...

  5. 2017 多校训练第二场 HDU 6047 Maximum Sequence(贪心+优先队列)

    Maximum Sequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  6. (2017多校训练第一场)HDU - 6034 Balala Power! 贪心

    很容易就想到把每个字母的权重都算出来,然后把权重最大的赋值成25,次大的赋值成24......以此类推. 但是字符串长度最大为100000,也就是说一个字母的权重最大是26^100000次方左右,太大 ...

  7. HDU 6169 Senior PanⅡ(数论+dp)

    Description 给出一个区间[L,R][L,R][L,R],问该区间中所有以KKK作为最小因子(大于1" role="presentation" style=&q ...

  8. 多校第六场 HDU 4927 JAVA大数类+模拟

    HDU 4927 题目大意:给定一个长度为n的序列a,每次生成一个新的序列,长度为n-1,新序列b中bi=ai+1−ai,直到序列长度为1.输出最后的数. 思路:这题实在是太晕了,比赛的时候搞了四个小 ...

  9. [2019HDU多校第四场][HDU 6617][D. Enveloping Convex]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6617 题目大意:给出一凸包\(P\),求最小的与\(P\)相似且对应边平行的多边形,使得题目给出的\( ...

最新文章

  1. python函数用法详解2(变量的作用域(全局变量、局部变量)、共享全局变量、函数返回值、函数的参数(位置参数、关键字参数、默认参数、不定长参数)、拆包、交换变量值、引用、可变和不可变类型)
  2. springcloud 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离
  3. k8s kubebuilder系列开发 — 理解和剖析 Kubebuilder
  4. UGUI_UI的深度学习
  5. 打印pdf就一页_PDF 文件转换工具
  6. python问号表达式_python中的问号表达式
  7. Django中celery配置总结
  8. 优化 Tengine HTTPS 握手时间
  9. S5PV210裸机之外部中断
  10. IPSEC---动态MAP-VS-静态MAP
  11. 网络爬虫--抓取图片_vortex_新浪博客
  12. Ext核心代码分析之Function.createDelegate
  13. mongodb 如何更改端口号_Python 操作 MongoDB 数据库介绍
  14. 2. 使用keras-神经网络来做线性回归问题
  15. FBWF和EWF的对比
  16. 如果大一光靠自己学,华为HICE能过的几率大吗?
  17. 质数/素数 - 合数
  18. 数据分析方法之用户画像分析!
  19. 软件测试工具有哪些?--最全最新的软件测试工具下载地址都在这里,错过绝对后悔
  20. 数字人民币红包体验如何?

热门文章

  1. Mac苹果电脑不小心删除的文件怎么恢复?
  2. matlab提取伴奏原理,如何将音频里的伴奏提取出来
  3. 夜晚网速变慢与网站服务器开机数量减少有关,4G整体网速未下降体验慢与用户数有关...
  4. VTL_虚拟磁带库_转摘
  5. ThinkPHP5RCE漏洞复现
  6. GBase 8a 资源管理简介
  7. 华为防火墙与二层交换机对接配置VLAN上网设置
  8. 百度云存储教程---免费建立自己的静态站点
  9. Error running : No valid Maven installation found. Either set the home directory in the
  10. (转) ActiveMQ面试专题