传送门

分析

对这个$f(k)$整除分块,用杜教筛搞出$\mu$的部分然后另一部分快速幂即可

代码

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<string>
  5. #include<algorithm>
  6. #include<cctype>
  7. #include<cmath>
  8. #include<cstdlib>
  9. #include<queue>
  10. #include<ctime>
  11. #include<vector>
  12. #include<set>
  13. #include<map>
  14. #include<stack>
  15. using namespace std;
  16. const int N = 5e6;
  17. const int mod = 1e9+;
  18. int p[N+],mu[N+];
  19. bool is[N+];
  20. map<int,int>MU;
  21. inline void init(){
  22. int i,j,cnt=;
  23. mu[]=;
  24. for(i=;i<=N;i++){
  25. if(!is[i])p[++cnt]=i,mu[i]=-;
  26. for(j=;j<=cnt,i*p[j]<=N;j++){
  27. is[p[j]*i]=;
  28. if(i%p[j]==){
  29. mu[p[j]*i]=;
  30. break;
  31. }
  32. mu[p[j]*i]=-mu[i];
  33. }
  34. }
  35. for(i=;i<=N;i++)mu[i]=(mu[i]+mu[i-]+mod)%mod;
  36. }
  37. inline int go(int x){
  38. if(x<=N)return mu[x];
  39. if(MU[x])return MU[x];
  40. int res=,le=,ri;
  41. for(;le<=x;le=ri+){
  42. ri=x/(x/le);
  43. res=(res-(long long)(ri-le+)*go(x/le)%mod+mod)%mod;
  44. }
  45. return MU[x]=res;
  46. }
  47. inline int pw(int x,int p){
  48. int res=;
  49. while(p){
  50. if(p&)res=(long long)res*x%mod;
  51. x=(long long)x*x%mod;
  52. p>>=;
  53. }
  54. return res;
  55. }
  56. int main(){
  57. int n,m,p,k,L,R,le=,ri,Ans=;
  58. scanf("%d%d%d%d",&p,&k,&L,&R);
  59. n=R/k,m=(L-)/k;
  60. init();
  61. for(;le<=n;le=ri+){
  62. if(m/le)ri=min(n/(n/le),m/(m/le));
  63. else ri=n/(n/le);
  64. Ans=(Ans+(long long)(go(ri)-go(le-)+mod)%mod*pw(n/le-m/le,p)%mod)%mod;
  65. }
  66. printf("%d\n",Ans);
  67. return ;
  68. }

p3172 选数的更多相关文章

  1. BZOJ 3930 Luogu P3172 选数 (莫比乌斯反演)

    手动博客搬家:本文发表于20180310 11:46:11, 原地址https://blog.csdn.net/suncongbo/article/details/79506484 题目链接: (Lu ...

  2. 【BZOJ-2732】集合选数 状压DP (思路题)

    2734: [HNOI2012]集合选数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1070  Solved: 623[Submit][Statu ...

  3. CODE VS1008选数

    #include<cstdlib> #include<cstdio> #include<iostream> #include<cmath> #inclu ...

  4. BZOJ 3930: [CQOI2015]选数 递推

    3930: [CQOI2015]选数 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pro ...

  5. bzoj 2734: [HNOI2012]集合选数 状压DP

    2734: [HNOI2012]集合选数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 560  Solved: 321[Submit][Status ...

  6. BZOJ3930: [CQOI2015]选数

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3930 容斥原理. 令l=(L-1)/k,r=R/k,这样找k的倍数就相当于找1的倍数. 设F[ ...

  7. 【BZOJ3930】选数(莫比乌斯反演,杜教筛)

    [BZOJ3930]选数(莫比乌斯反演,杜教筛) 题面 给定\(n,K,L,R\) 问从\(L-R\)中选出\(n\)个数,使得他们\(gcd=K\)的方案数 题解 这样想,既然\(gcd=K\),首 ...

  8. 【BZOJ2734】【HNOI2012】集合选数(状态压缩,动态规划)

    [BZOJ2734][HNOI2012]集合选数(状态压缩,动态规划) 题面 Description <集合论与图论>这门课程有一道作业题,要求同学们求出{1, 2, 3, 4, 5}的所 ...

  9. bzoj3930[CQOI2015]选数 容斥原理

    3930: [CQOI2015]选数 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1383  Solved: 669[Submit][Status] ...

随机推荐

  1. Django REST_framework Quickstart

    局部避免crsf的方式 针对视图函数: from django.views.decorators.csrf import csrf_exempt @csrf_exempt def foo(reques ...

  2. WPF之ContextMenu的命定绑定

    在WPF中右击菜单项的XMAL代码是: <ContextMenu x:Key="sampleContextMenu"> <MenuItem Header=&quo ...

  3. Network Saboteur (深搜递归思想的特殊使用)

    个人心得:对于深搜的使用还是不到位,对于递归的含义还是不太清楚!本来想着用深搜构成一个排列,然后从一到n分割成俩个数组,然后后面发现根本实现不了,思路太混乱.后来借鉴了网上的思想,发现用数组来标志,当 ...

  4. 团队队列(列和map结合的经典运用)

    Queues and Priority Queues are data structures which are known to most computer scientists. The Team ...

  5. vector的简单运用(士兵队列训练问题)

    某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序 ...

  6. 【LeetCode】006. ZigZag Conversion

    The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...

  7. django1.7 HTML模板中{%url%}的使用

    转载:https://my.oschina.net/jastme/blog/345265

  8. 学习动态性能表(15)--v$rollstat

    学习动态性能表 第15篇--V$ROLLSTAT  2007.6.12 本视图自启动即保持并记录各回滚段统计项.在学习本视图之前,我们先来了解一下回滚段(rollback segment)的相关概念: ...

  9. Azure上批量创建OS Disk大于30G的Linux VM

    Azure上VM的OS盘的大小在创建时是固定的.Windows是127G,Linux是30G.如果需要批量创建的VM的OS Disk有更大的容量.可以考虑用下面的方法实现. 1 创建一台有Data-d ...

  10. Linux应用函数 -- 字符串

    1.strchr 原型 char *strchr(const char* _Str,char _Val) 头文件 string.h 功能 查找字符串_Str中首次出现字符_Val的位置 返回值  成功 ...