https://www.luogu.org/problemnew/show/P4562

https://www.lydsy.com/JudgeOnline/problem.php?id=5323

(BZOJ有点卡常数过不去。)时限已经开大。

实际上我们只需要求出l~r区间内有多少数是满足不存在l~r内的数a使得i*a=这个数

我们欧拉筛实际上就是一个数可以分解成的最大的两个数(其中一个是最大质数)的乘积,于是我们判断那个合数是否<l且这个数是否在l~r的区间内,如果满足则这个数就是我们要求的。

然后数学公式导一波就行了。

  1. #include<cmath>
  2. #include<queue>
  3. #include<cstdio>
  4. #include<cctype>
  5. #include<cstring>
  6. #include<iostream>
  7. #include<algorithm>
  8. using namespace std;
  9. typedef long long ll;
  10. const int N=1e7+;
  11. const int p=1e9+;
  12. int l,r,tot,su[N],cnt;
  13. ll jc[N],inv[N];
  14. bool he[N];
  15. int qpow(int k,int n){
  16. int res=;
  17. while(n){
  18. if(n&)res=(ll)res*k%p;
  19. k=(ll)k*k%p;n>>=;
  20. }
  21. return res;
  22. }
  23. void Euler(int n){
  24. for(int i=;i<=n;++i){
  25. if(!he[i]){
  26. su[++tot]=i;
  27. if(l<=i&&i<=r)++cnt;
  28. }
  29. bool ok=;
  30. for(int j=;j<=tot;++j){
  31. int q=i*su[j];
  32. if(q>n)break;
  33. he[q]=;
  34. if(l<=q&&q<=r&&i<l)++cnt;
  35. if(i%su[j]==)break;
  36. }
  37. }
  38. }
  39. ll C(int n,int m){
  40. return jc[n]*inv[m]%p*inv[n-m]%p;
  41. }
  42. void init(int n){
  43. jc[]=;
  44. for(int i=;i<=n;++i)jc[i]=jc[i-]*i%p;
  45. inv[n]=qpow(jc[n],p-);
  46. for(int i=n-;i;i--)inv[i]=inv[i+]*(i+)%p;
  47. inv[]=;
  48. }
  49. int main(){
  50. scanf("%d%d",&l,&r);
  51. init(r);
  52. ll ans=;
  53. if(l==){
  54. for(int i=;i<=r;++i){
  55. ans=(ans+i*jc[r-])%p;
  56. }
  57. printf("%lld\n",ans);
  58. }else{
  59. Euler(r);
  60. int n=r-l+;
  61. for(int i=cnt;i<=n;++i){
  62. ans=(ans+i*C(n-cnt,i-cnt)%p*jc[i-]%p*jc[n-i]%p*cnt%p)%p;
  63. }
  64. printf("%lld\n",ans);
  65. }
  66. return ;
  67. }

+++++++++++++++++++++++++++++++++++++++++++

+本文作者:luyouqi233。               +

+欢迎访问我的博客:http://www.cnblogs.com/luyouqi233/+

+++++++++++++++++++++++++++++++++++++++++++

BZOJ5323 & 洛谷4562:[JXOI2018]游戏——题解的更多相关文章

  1. 【贪心】洛谷 P1199 三国游戏 题解

     这个题尽管题目长,主要还是证明贪心的正确性(与博弈关系不大) 题目描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战 ...

  2. 洛谷P4562 [JXOI2018]游戏 数论

    正解:数论 解题报告: 传送门! 首先考虑怎么样的数可能出现在t(i)那个位置上?显然是[l,r]中所有无法被表示出来的数(就约数不在[l,r]内的数嘛QwQ 所以可以先把这些数筛出来 具体怎么筛的话 ...

  3. 洛谷P1057传球游戏题解

    题目 这个题表面上看并不像DP,但是当我们看到方案数时,我们可能会想到什么??? 对,分类加法原理,在每一轮中,每一个点的方案数都要加上这个点左边的方案与右边的方案. 因此我们可以枚举,设一个DP数组 ...

  4. 洛谷P2670扫雷游戏题解

    题目 这道题是一个简单的模拟搜索题,可以把每个雷的位置都记作1. 这样就可记录出数字啦 #include<iostream> #include<cstring> using n ...

  5. 洛谷P4562 [JXOI2018]游戏(组合数学)

    题意 题目链接 Sol 这个题就比较休闲了. \(t(p)\)显然等于最后一个没有约数的数的位置,那么我们可以去枚举一下. 设没有约数的数的个数有\(cnt\)个 因此总的方案为\(\sum_{i=c ...

  6. 洛谷 P1199 三国游戏 题解

    每日一题 day18 打卡 Analysis 贪心 假如小A先选最大的[5,4],虽然电脑必须选一个破坏, 我们可以理解为5和4都属于小A的,假如后面未被破坏的最大值无论是和5相关还是和4相关,必然还 ...

  7. 洛谷P1199 三国游戏——题解

    题目传送 显然,在这样的数据范围下搜索是没希望的了.好好分析一下,发现小涵时不可能拿到与一个武将最默契的另一个武将了.所以考虑一下默契值次大的一对武将. 显然,对每一个武将来说,小涵是可以拿到默契值次 ...

  8. 洛谷 P1080 国王游戏 题解

    原题 传送门 思路 分析 我们先假设队伍如下: People left hand right hand Before \(S_a\) A \(a_1\) \(b_1\) B \(a_2\) \(b_2 ...

  9. 洛谷P2832 行路难 分析+题解代码【玄学最短路】

    洛谷P2832 行路难 分析+题解代码[玄学最短路] 题目背景: 小X来到了山区,领略山林之乐.在他乐以忘忧之时,他突然发现,开学迫在眉睫 题目描述: 山区有n座山.山之间有m条羊肠小道,每条连接两座 ...

随机推荐

  1. Ruby 基础教程1-5

    1.条件语句 if unless case        unless和if相反,条件不成立则执行   2.条件  除了 false和nil 其他都是true   3.unless 语法        ...

  2. hdu1050Moving Tables(贪心)

    Moving Tables Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  3. 在Android上运用Anko和Kotlin开发数据库:SQLite从来不是一件轻松的事(KAD25)

    作者:Antonio Leiva 时间:Mar 30, 2017 原文链接:https://antonioleiva.com/databases-anko-kotlin/ 事实告诉我们:在Androi ...

  4. 【转】跨平台移动端开发框架NativeScript 发布正式版本

    原文:http://news.cnblogs.com/n/520865/ Nativescript 项目地址:http://www.telerik.com/nativescript “一次编码,处处运 ...

  5. C++ ifndef /define/ endif 作用和用法

    ifndef/define/endif”主要目的是防止头文件的重复包含和编译 比如你有两个C文件,这两个C文件都include了同一个头文件.而编译时,这两个C文件要一同编译成一个可运行文件,于是问题 ...

  6. 56[LeetCode] .Merge Intervals

    Given an array nums of n integers and an integer target, are there elements a, b, c, and d in nums s ...

  7. springMVC怎么改变form的提交方式为put或者delete

    想着练习一下创建restful风格的网站呢,结果发现在jsp页面上并不能灵活使用put和delete提交方式.下面我的解决办法 一. form 只支持post和get两种提交方式,只支持get提交方式 ...

  8. 共识算法 pos,Dpos

    在之前讲解了比特币中的共识算法pow(proot of work),我们先来简单的回顾一下. 新的交易将会广播给所有节点. 每个节点将都会讲新的交易收集到一个区块中. 每个节点都在为其区块收集困难的工 ...

  9. Python3 Tkinter-Radionbutton

    1.创建单选按钮 from tkinter import * root=Tk() Radiobutton(root,text='b1').pack() Radiobutton(root,text='b ...

  10. 2. socket结构体——表示socket地址

    一.两种通用socket结构体 1. sockaddr struct sockaddr { sa_family_t sa_family; // 地址族 char sa_data[14]; // 存放s ...