loj2544 「JXOI2018」游戏
自己太傻,一遇到有关数学的题就懵逼,这种简单题竟然还得靠NicoDafaGood
在$[l,r]$这个区间内,如果没有数是$x$的因数,我们称$x$为好数。
我们就只需要考虑这些好数中最靠后的那一个的位置,因为这些好数,我们必须取,而且是充分必要条件。
那么我们算得了好数的个数,问题就转化成,有一堆0和1,问所有排列方式,最后一个1的位置的和。
或者说,算最后的连续的0的个数的和。
明显可以随便递推转移一下。
- //Serene
- #include<algorithm>
- #include<iostream>
- #include<cstring>
- #include<cstdlib>
- #include<cstdio>
- #include<cmath>
- using namespace std;
- #define ll long long
- #define db double
- #define For(i,a,b) for(register int i=(a);i<=(b);++i)
- #define Rep(i,a,b) for(register int i=(a);i>=(b);--i)
- const ll mod=1e9+7,maxn=1e7+7;
- ll n,m,dp[maxn],mi[maxn];
- char cc;ll ff;
- template<typename T>void read(T& aa) {
- aa=0;cc=getchar();ff=1;
- while((cc<'0'||cc>'9')&&cc!='-') cc=getchar();
- if(cc=='-') ff=-1,cc=getchar();
- while(cc>='0'&&cc<='9') aa=aa*10+cc-'0',cc=getchar();
- aa*=ff;
- }
- int prime[maxn],num[maxn],totp;
- bool ok[maxn];
- void get_p() {
- num[1]=2;
- For(i,2,m) {
- if(!ok[i]) num[i]=i,prime[++totp]=i;
- For(j,1,totp) {
- if(prime[j]>m/i) break;
- ok[i*prime[j]]=1;
- num[i*prime[j]]=prime[j];
- if(i%prime[j]==0) break;
- }
- }
- }
- int main() {
- read(n); read(m);
- get_p(); ll x,sum=0,o=m-n+1;
- For(i,n,m) {
- x=i/num[i];
- if(x<n) ++sum;
- }
- dp[0]=1; o-=sum;
- For(i,1,o) dp[i]=dp[i-1]*(o-i+1)%mod;
- mi[0]=1; For(i,1,o+sum) mi[i]=mi[i-1]*i%mod;
- For(i,0,o) dp[i]=dp[i]*mi[sum+o-i]%mod;
- For(i,0,o) dp[i]=(dp[i]-dp[i+1]+mod)%mod;
- ll rs=0; For(i,0,o) rs+=dp[i]*(sum+o-i)%mod;
- printf("%lld\n",rs%mod);
- return 0;
- }
loj2544 「JXOI2018」游戏的更多相关文章
- 「JXOI2018」游戏
注意输出的应该是 所有方案的和,,而不是期望. 我们不妨把依赖关系建图,可以发现 所有没有入度的点都被查水表了一次 是 游戏结束的 充要条件. 于是我们只需要知道有多少没有入度的点,然后再排列算一算就 ...
- 【LOJ】#2544. 「JXOI2018」游戏
题解 九条可怜还有那么善良的一面??? 显然有些数在这个区间里没有数是它的约数,它们其中的最后一个取的一定就是\(t(p)\)的值 这样我们只需要枚举\(t(p)\)的值,这个值就是"没有任 ...
- LOJ_2305_「NOI2017」游戏 _2-sat
LOJ_2305_「NOI2017」游戏 _2-sat 题意: 给你一个长度为n的字符串S,其中第i个字符为a表示第i个地图只能用B,C两种赛车,为b表示第i个地图只能用A,C两种赛车,为c表示第i个 ...
- 「HNOI2018」游戏
「HNOI2018」游戏 解题思路 首先没有锁上的门可以缩点缩掉,然后对于一扇锁上的门,如果钥匙在左边,那么右边就永远不可能到达左边,同理如果钥匙在右边,左边就永远不可能到达右边. 然后考虑一个暴力的 ...
- 「NOI2017」游戏
「NOI2017」游戏 题目描述 小 L 计划进行 \(n\) 场游戏,每场游戏使用一张地图,小 L 会选择一辆车在该地图上完成游戏. 小 L 的赛车有三辆,分别用大写字母 \(A\).\(B\).\ ...
- loj #2305. 「NOI2017」游戏
#2305. 「NOI2017」游戏 题目描述 小 L 计划进行 nnn 场游戏,每场游戏使用一张地图,小 L 会选择一辆车在该地图上完成游戏. 小 L 的赛车有三辆,分别用大写字母 AAA.BBB. ...
- LOJ2305 「NOI2017」游戏
「NOI2017」游戏 题目背景 狂野飙车是小 L 最喜欢的游戏.与其他业余玩家不同的是,小 L 在玩游戏之余,还精于研究游戏的设计,因此他有着与众不同的游戏策略. 题目描述 小 L 计划进行$n$场 ...
- 「NOI2017」游戏 解题报告
「NOI2017」游戏 \(d\)这么小,你考虑直接对\(d\)个东西暴力 枚举\(x\)为\(a\)或\(b\)(\(c\)就不用了,因为\(a,b\)已经包含\(c\))了,剩下的就是个\(2-s ...
- 「JSOI2013」游戏中的学问
「JSOI2013」游戏中的学问 传送门 考虑 \(\text{DP}\) 设 \(dp_{i, j}\) 表示将前 \(i\) 个人分成 \(j\) 个集合,并且第 \(i\) 个人在第 \(j\) ...
随机推荐
- 2019-2-17-如何在-Windows-10-中移除-Internet-Explorer-浏览器
title author date CreateTime categories 如何在 Windows 10 中移除 Internet Explorer 浏览器 lindexi 2019-02-17 ...
- barrel shifter, logarthmic shifter and funnel shifter
1,shifter小集合 (1) simple shift 左移或右移补0 (2) arthmetic shift 左移补0,右移补符号位 (3) barrel shifter 桶型,顾名思义,应该头 ...
- Miler-Rabbin素数判定
前言 素数判定? 小学生都可以打的出来! 直接暴力O(n)O(\sqrt n)O(n)-- 然后就会发现,慢死了-- 于是我们想到了筛法,比如前几天说到的詹欧筛法. 但是线性的时间和空间成了硬伤-- ...
- Nginx在windows系统的常用命令
启动 start nginx 强制停止 nginx.exe -s stop 重启 nginx.exe -s reload
- python的meshgrid用法和3D库 mpl_toolkits.mplot3d 与PolynomialFeatures多项式库学习
meshgrid import numpy as np from matplotlib import pyplot as plt from mpl_toolkits.mplot3d import Ax ...
- 对比两个String无规律包含连续4个相同字符返回true的方法
package com.qif.dsa.util; import java.util.ArrayList; import java.util.List; /** * @author * @Title: ...
- React中的Ajax
React中的Ajax 组件的数据来源,通常是通过Ajax请求从服务器获取,可以使用componentDidMount方法设置Ajax请求,等到请求成功,再用this.setState方法重新渲染UI ...
- 安装hadoop伪分布式
修改hosts cat /etc/hosts 127.0.0.1 mo.don.com 创建用户 useradd hadoop passwd hadoop sudo授权 visudo hadoop A ...
- 密码学笔记(4)——RSA的其他攻击
上一篇详细分析了几种分解因子的算法,这是攻击RSA密码最为明显的算法,这一篇中我们考虑是否有不用分解模数n就可以解密RSA的密文的方法,这是因为前面也提到,当n比较大的时候进行分解成素数的乘积是非常困 ...
- codeforces 1186E- Vus the Cossack and a Field
传送门:QAQQAQ 题意:给一个01矩阵A,他的相反矩阵为B,每一次变换都会将原矩阵面积乘4成为: AB BA 矩阵的左上角固定,变换无限次,现有q个询问,即求一个矩阵内的1的个数. 思路:因为反转 ...