题目链接: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;
}

2017多校第9场 HDU 6169 Senior PanⅡ 数论,DP,爆搜的更多相关文章

  1. 2017多校第9场 HDU 6166 Senior Pan 堆优化Dij

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6166 题意:给你一个有向图,然后给你k个点,求其中一个点到另一个点的距离的最小值. 解法:枚举二进制位 ...

  2. hdu 6169 Senior PanⅡ Miller_Rabin素数测试+容斥

    Senior PanⅡ Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others) Pr ...

  3. 2017多校第9场 HDU 6170 Two strings DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6170 题意:给了2个字符串,其中第2个字符串包含.和*两种特别字符,问第二个字符串能否和第一个匹配. ...

  4. 2017多校第9场 HDU 6161 Big binary tree 思维,类似字典树

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6161 题意: 题目是给一棵完全二叉树,从上到下从左到右给每个节点标号,每个点有权值,初始权值为其标号, ...

  5. 2017多校第10场 HDU 6181 Two Paths 次短路

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6181 题意:给一个图,求出次短路. 解法:我之前的模板不能解决这种图,就是最短路和次短路相等的情况,证 ...

  6. 2017多校第10场 HDU 6180 Schedule 贪心,multiset

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6180 题意:给了一些任务的开始时间和终止时间,现在让我们安排k台及机器,让这些任务在k太机器上最小,并 ...

  7. 2017多校第10场 HDU 6178 Monkeys 贪心,或者DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6178 题意:给出一棵有n个节点的树,现在需要你把k只猴子放在节点上,每个节点最多放一只猴子,且要求每只 ...

  8. 2017多校第10场 HDU 6171 Admiral 双向BFS或者A*搜索

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6171 题意: 给你一个高度为6的塔形数组,你每次只能将0与他上下相邻的某个数交换,问最少交换多少次可以 ...

  9. 2017多校第10场 HDU 6172 Array Challenge 猜公式,矩阵幂

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6172 题意:如题. 解法: #include <bits/stdc++.h> using ...

随机推荐

  1. 64位Win10系统安装Mysql5.7.11

    最近在装了64位Win10系统的mac book笔记本上用mysql-installer-community-5.7.11.0安装Mysql5.7.11,在配置mysql server时老是卡住,报错 ...

  2. Spring Data JPA 复杂/多条件组合查询

    1: 编写DAO类或接口  dao类/接口 需继承 public interface JpaSpecificationExecutor<T> 接口: 如果需要分页,还可继承 public ...

  3. Unity3D Image 组件附入图片问题

    作为新手经常会看到有个Image的组件 代码中理所当然的public 发现图片并不能附入其中, 解决办法直接 public Sprite 就可以了

  4. Spring MVC 表单验证

    1. 基于 JSR-303(一个数据验证的规范): import javax.validation.constraints.Min; import javax.validation.constrain ...

  5. Sass学习笔记(补充)

    阅读目录 1. Sass和SCSS的区别 2. @while循环 3. @at-root 4. @content 5. 凸显注释 6. CSS输出样式 7. 重置浏览器样式 8. Sass调试和@de ...

  6. 初学angular

    1.angular   表达式 2.ng-app   ng-init  ng-model  ng-repeat ng-model是用于表单元素的,支持双向绑定.对普通元素无效: ng-bind用于普通 ...

  7. 解决IE8下不支持document.getElementsByClassName的方法

    在代码前面加如下代码: if (!document.getElementsByClassName) { document.getElementsByClassName = function (clas ...

  8. linux自动化创建补丁

    BUS #!/bin/sh #判断H5_BD_${BD_data}目录是否存在 BD_data=$(date +"%F") #当日打包多次的情况下,初始化补丁目录 if [ -d ...

  9. (转)Sublime Text2 快捷键汇总

    场景:最近在编写项目中越发的感觉到一个得心应手的编辑器是多么的重要,而sublime,无疑是让我用着最舒服,最有感觉的编辑器了! 1 快捷键总结 一个好的编辑器,能大大提高编程的效率.如果能熟知软件的 ...

  10. 【Django】request 处理流程(转)

    Django 和其他 Web 框架的 HTTP 处理的流程大致相同,Django 处理一个 Request 的过程是首先通过中间件,然后再通过默认的 URL 方式进行的.我们可以在 Middlewar ...