https://loj.ac/problem/2544

自己太傻,一遇到有关数学的题就懵逼,这种简单题竟然还得靠NicoDafaGood

在$[l,r]$这个区间内,如果没有数是$x$的因数,我们称$x$为好数。

我们就只需要考虑这些好数中最靠后的那一个的位置,因为这些好数,我们必须取,而且是充分必要条件。

那么我们算得了好数的个数,问题就转化成,有一堆0和1,问所有排列方式,最后一个1的位置的和。

或者说,算最后的连续的0的个数的和。

明显可以随便递推转移一下。

  1. //Serene
  2. #include<algorithm>
  3. #include<iostream>
  4. #include<cstring>
  5. #include<cstdlib>
  6. #include<cstdio>
  7. #include<cmath>
  8. using namespace std;
  9. #define ll long long
  10. #define db double
  11. #define For(i,a,b) for(register int i=(a);i<=(b);++i)
  12. #define Rep(i,a,b) for(register int i=(a);i>=(b);--i)
  13. const ll mod=1e9+7,maxn=1e7+7;
  14. ll n,m,dp[maxn],mi[maxn];
  15.  
  16. char cc;ll ff;
  17. template<typename T>void read(T& aa) {
  18. aa=0;cc=getchar();ff=1;
  19. while((cc<'0'||cc>'9')&&cc!='-') cc=getchar();
  20. if(cc=='-') ff=-1,cc=getchar();
  21. while(cc>='0'&&cc<='9') aa=aa*10+cc-'0',cc=getchar();
  22. aa*=ff;
  23. }
  24.  
  25. int prime[maxn],num[maxn],totp;
  26. bool ok[maxn];
  27. void get_p() {
  28. num[1]=2;
  29. For(i,2,m) {
  30. if(!ok[i]) num[i]=i,prime[++totp]=i;
  31. For(j,1,totp) {
  32. if(prime[j]>m/i) break;
  33. ok[i*prime[j]]=1;
  34. num[i*prime[j]]=prime[j];
  35. if(i%prime[j]==0) break;
  36. }
  37. }
  38. }
  39.  
  40. int main() {
  41. read(n); read(m);
  42. get_p(); ll x,sum=0,o=m-n+1;
  43. For(i,n,m) {
  44. x=i/num[i];
  45. if(x<n) ++sum;
  46. }
  47. dp[0]=1; o-=sum;
  48. For(i,1,o) dp[i]=dp[i-1]*(o-i+1)%mod;
  49. mi[0]=1; For(i,1,o+sum) mi[i]=mi[i-1]*i%mod;
  50. For(i,0,o) dp[i]=dp[i]*mi[sum+o-i]%mod;
  51. For(i,0,o) dp[i]=(dp[i]-dp[i+1]+mod)%mod;
  52. ll rs=0; For(i,0,o) rs+=dp[i]*(sum+o-i)%mod;
  53. printf("%lld\n",rs%mod);
  54. return 0;
  55. }

loj2544 「JXOI2018」游戏的更多相关文章

  1. 「JXOI2018」游戏

    注意输出的应该是 所有方案的和,,而不是期望. 我们不妨把依赖关系建图,可以发现 所有没有入度的点都被查水表了一次 是 游戏结束的 充要条件. 于是我们只需要知道有多少没有入度的点,然后再排列算一算就 ...

  2. 【LOJ】#2544. 「JXOI2018」游戏

    题解 九条可怜还有那么善良的一面??? 显然有些数在这个区间里没有数是它的约数,它们其中的最后一个取的一定就是\(t(p)\)的值 这样我们只需要枚举\(t(p)\)的值,这个值就是"没有任 ...

  3. LOJ_2305_「NOI2017」游戏 _2-sat

    LOJ_2305_「NOI2017」游戏 _2-sat 题意: 给你一个长度为n的字符串S,其中第i个字符为a表示第i个地图只能用B,C两种赛车,为b表示第i个地图只能用A,C两种赛车,为c表示第i个 ...

  4. 「HNOI2018」游戏

    「HNOI2018」游戏 解题思路 首先没有锁上的门可以缩点缩掉,然后对于一扇锁上的门,如果钥匙在左边,那么右边就永远不可能到达左边,同理如果钥匙在右边,左边就永远不可能到达右边. 然后考虑一个暴力的 ...

  5. 「NOI2017」游戏

    「NOI2017」游戏 题目描述 小 L 计划进行 \(n\) 场游戏,每场游戏使用一张地图,小 L 会选择一辆车在该地图上完成游戏. 小 L 的赛车有三辆,分别用大写字母 \(A\).\(B\).\ ...

  6. loj #2305. 「NOI2017」游戏

    #2305. 「NOI2017」游戏 题目描述 小 L 计划进行 nnn 场游戏,每场游戏使用一张地图,小 L 会选择一辆车在该地图上完成游戏. 小 L 的赛车有三辆,分别用大写字母 AAA.BBB. ...

  7. LOJ2305 「NOI2017」游戏

    「NOI2017」游戏 题目背景 狂野飙车是小 L 最喜欢的游戏.与其他业余玩家不同的是,小 L 在玩游戏之余,还精于研究游戏的设计,因此他有着与众不同的游戏策略. 题目描述 小 L 计划进行$n$场 ...

  8. 「NOI2017」游戏 解题报告

    「NOI2017」游戏 \(d\)这么小,你考虑直接对\(d\)个东西暴力 枚举\(x\)为\(a\)或\(b\)(\(c\)就不用了,因为\(a,b\)已经包含\(c\))了,剩下的就是个\(2-s ...

  9. 「JSOI2013」游戏中的学问

    「JSOI2013」游戏中的学问 传送门 考虑 \(\text{DP}\) 设 \(dp_{i, j}\) 表示将前 \(i\) 个人分成 \(j\) 个集合,并且第 \(i\) 个人在第 \(j\) ...

随机推荐

  1. 2019-2-17-如何在-Windows-10-中移除-Internet-Explorer-浏览器

    title author date CreateTime categories 如何在 Windows 10 中移除 Internet Explorer 浏览器 lindexi 2019-02-17 ...

  2. barrel shifter, logarthmic shifter and funnel shifter

    1,shifter小集合 (1) simple shift 左移或右移补0 (2) arthmetic shift 左移补0,右移补符号位 (3) barrel shifter 桶型,顾名思义,应该头 ...

  3. Miler-Rabbin素数判定

    前言 素数判定? 小学生都可以打的出来! 直接暴力O(n)O(\sqrt n)O(n​)-- 然后就会发现,慢死了-- 于是我们想到了筛法,比如前几天说到的詹欧筛法. 但是线性的时间和空间成了硬伤-- ...

  4. Nginx在windows系统的常用命令

    启动 start nginx 强制停止 nginx.exe -s stop 重启 nginx.exe -s reload

  5. python的meshgrid用法和3D库 mpl_toolkits.mplot3d 与PolynomialFeatures多项式库学习

    meshgrid import numpy as np from matplotlib import pyplot as plt from mpl_toolkits.mplot3d import Ax ...

  6. 对比两个String无规律包含连续4个相同字符返回true的方法

    package com.qif.dsa.util; import java.util.ArrayList; import java.util.List; /** * @author * @Title: ...

  7. React中的Ajax

    React中的Ajax 组件的数据来源,通常是通过Ajax请求从服务器获取,可以使用componentDidMount方法设置Ajax请求,等到请求成功,再用this.setState方法重新渲染UI ...

  8. 安装hadoop伪分布式

    修改hosts cat /etc/hosts 127.0.0.1 mo.don.com 创建用户 useradd hadoop passwd hadoop sudo授权 visudo hadoop A ...

  9. 密码学笔记(4)——RSA的其他攻击

    上一篇详细分析了几种分解因子的算法,这是攻击RSA密码最为明显的算法,这一篇中我们考虑是否有不用分解模数n就可以解密RSA的密文的方法,这是因为前面也提到,当n比较大的时候进行分解成素数的乘积是非常困 ...

  10. codeforces 1186E- Vus the Cossack and a Field

    传送门:QAQQAQ 题意:给一个01矩阵A,他的相反矩阵为B,每一次变换都会将原矩阵面积乘4成为: AB BA 矩阵的左上角固定,变换无限次,现有q个询问,即求一个矩阵内的1的个数. 思路:因为反转 ...