洛谷P4562 [JXOI2018]游戏 数论
正解:数论
解题报告:
首先考虑怎么样的数可能出现在$t(i)$那个位置上?显然是$[l,r]$中所有无法被表示出来的数(就约数不在$[l,r]$内的数嘛$QwQ$
所以可以先把这些数筛出来
具体怎么筛的话,最原始的方法就埃氏筛?
然后显然可以线性筛,但我$jio$得大概快不到哪儿去而且麻烦一些懒得打了所以直接用的埃氏筛
然后现在就筛出来,有$sum$个满足条件的数了,考虑怎么算贡献?(先注明下,,,可能有些±1的细节下面都直接略过了$QAQ$
就先枚最后一个这样的数出现的位置$x$(也就是$t(i)$的取值
首先它自己会有$x$的贡献
然后在它后面可以从$n-sum$个数中选出$n-x$个数,而且这些数可以随便排列,所以有$C(n-x,n-sum)\cdot (n-x)!$
然后在它之前的数可以随便排列,所以有$(x-1)!$
最后这个数是从$sum$个数中选出来的所以还有$C(sum,1)$
综上,可以列出式子,$ans=\sum i\cdot sum\cdot (i-1)!\cdot (n-x)!\cdot C(n-x,n-sum)$
然后这题好像还有优化,,,但是我懒得落实了(bushi
反正一时半会儿应该不会再写优化了,,,如果很久很久之后考古出了这篇博客也许会填下QAQ?(四舍五入就是咕了:D
#include<bits/stdc++.h>
using namespace std;
#define il inline
#define ll long long
#define gc getchar()
#define ri register int
#define rc register char
#define rb register bool
#define rp(i,x,y) for(ri i=x;i<=y;++i)
#define my(i,x,y) for(ri i=x;i>=y;--i) const int mod=,N=+;
int l,r,sum,fac[N],ifac[N];
bool vis[N]; il int read()
{
rc ch=gc;ri x=;rb y=;
while(ch!='-' && (ch>'' || ch<''))ch=gc;
if(ch=='-')ch=gc,y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
}
il int power(ri x,ri y){int ret=;while(y){if(y&)ret=1ll*ret*x%mod;x=1ll*x*x%mod;y>>=;}return ret;}
il void pre(ri n)
{
fac[]=;rp(i,,n)fac[i]=1ll*fac[i-]*i%mod;
ifac[n]=power(fac[n],mod-);my(i,n-,)ifac[i]=1ll*ifac[i+]*(i+)%mod;
}
inline int C(ri n,ri m){return 1ll*fac[n]*ifac[m]%mod*ifac[n-m]%mod;} int main()
{
// freopen("4562.in","r",stdin);//freopen("4562.out","w",stdout);
l=read();r=read();pre(r);
rp(i,l,r)if(!vis[i]){++sum;for(ri j=i;j<=r;j+=i)vis[j]=;}
ri as=,n=r-l+;
rp(i,sum,n)as=(as+1ll*i*sum%mod*C(n-sum,n-i)%mod*fac[n-i]%mod*fac[i-]%mod)%mod;
printf("%d\n",as);
return ;
}
最后放下代码鸭!
洛谷P4562 [JXOI2018]游戏 数论的更多相关文章
- 洛谷P4562 [JXOI2018]游戏(组合数学)
题意 题目链接 Sol 这个题就比较休闲了. \(t(p)\)显然等于最后一个没有约数的数的位置,那么我们可以去枚举一下. 设没有约数的数的个数有\(cnt\)个 因此总的方案为\(\sum_{i=c ...
- 洛谷 P2197 nim游戏
洛谷 P2197 nim游戏 题目描述 甲,乙两个人玩Nim取石子游戏. nim游戏的规则是这样的:地上有n堆石子(每堆石子数量小于10000),每人每次可从任意一堆石子里取出任意多枚石子扔掉,可以取 ...
- 洛谷 P1965 转圈游戏
洛谷 P1965 转圈游戏 传送门 思路 每一轮第 0 号位置上的小伙伴顺时针走到第 m 号位置,第 1 号位置小伙伴走到第 m+1 号位置,--,依此类推,第n − m号位置上的小伙伴走到第 0 号 ...
- 洛谷 P1000 超级玛丽游戏
P1000 超级玛丽游戏 题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续尝试P1001.P1008. 题目描述 超级玛丽是一个非常经典的游戏.请你用字符画的形式输出超级 ...
- 【流水调度问题】【邻项交换对比】【Johnson法则】洛谷P1080国王游戏/P1248加工生产调度/P2123皇后游戏/P1541爬山
前提说明,因为我比较菜,关于理论性的证明大部分是搬来其他大佬的,相应地方有注明. 我自己写的部分换颜色来便于区分. 邻项交换对比是求一定条件下的最优排序的思想(个人理解).这部分最近做了一些题,就一起 ...
- $loj10156/$洛谷$2016$ 战略游戏 树形$DP$
洛谷loj Desription Bob 喜欢玩电脑游戏,特别是战略游戏.但是他经常无法找到快速玩过游戏的方法.现在他有个问题. 现在他有座古城堡,古城堡的路形成一棵树.他要在这棵树的节点上放置最少数 ...
- 洛谷P1000 超级玛丽游戏(洛谷新手村1-1-1)
题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续尝试P1001.P1008. 题目描述 超级玛丽是一个非常经典的游戏.请你用字符画的形式输出超级玛丽中的一个场景. *** ...
- 洛谷P1080 国王游戏 python解法 - 高精 贪心 排序
洛谷的题目实在是裹脚布 还编的像童话 这题要 "使得获得奖赏最多的大臣,所获奖赏尽可能的少." 看了半天都觉得不像人话 总算理解后 简单说题目的意思就是 根据既定的运算规则 如何排 ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
随机推荐
- Centos6.4 编译安装 nginx php
一. 准备依赖库 安装make: yum -y install gcc automake autoconf libtool make 安装g++: yum install gcc gcc-c++ 二. ...
- [NM]打开NetworkManager和wpa_supplicant的DEBUG接口
turn on the DEBUG log in /etc/NetworkManager/NetworkManager.conf and restart NetworkManager. [loggin ...
- android开发(47) 使用xml drawable 实现 局部圆角,可用作圆角边框
代码如下: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android=" ...
- CLOS架构是啥?
有多少种技术能够在六十五年后依旧能够熠熠生辉,在IT的基础架构中扮演着重要角色?CLOS架构应该算是一项.Clos架构,诞生于1952年,是由由贝尔实验室一位叫Charles Clos的人提出的.CL ...
- windows下svn钩子实现每次提交更新至web目录
目的 找 到SVN Server中的仓库(Repositories)文件夹的位置,在相应的项目文件夹中找到hooks文件夹.在该文件夹中添加一个post- commit文件:当有commit动作发生时 ...
- Git -- 使用GitHub
我们一直用GitHub作为免费的远程仓库,如果是个人的开源项目,放到GitHub上是完全没有问题的.其实GitHub还是一个开源协作社区,通过GitHub,既可以让别人参与你的开源项目,也可以参与别人 ...
- SQL导出数据到EXCEL的问题
DTS导出向导 不会 我这有个是用C#语言写的 try { Excel.Application xApp = new Excel.ApplicationClass(); xApp.Visible = ...
- Git合并最近的commit
合并commit的做法一般用在pull request的时候,把开发同一功能时的所有琐碎的commit合并到一个(假装自己的代码是高质量代码(手动滑稽)).主要使用的命令是git rebase 或者g ...
- 利用Google开源Java容器化工具Jib构建镜像
转载:https://blog.csdn.net/u012562943/article/details/80995373 一.前言 容器的出现让Java开发人员比以往任何时候都更接近“编写一次,到处运 ...
- 4. Oracle数据库用户管理备份与恢复
一. Oracle用户管理备份介绍 Oracle物理备份核心就是将物理文件拷贝一份副本:存放在磁盘上.物理文件指的是:数据文件,控制文件,日志文件,参数文件等等. 根据数据库状态而分:备份可分为热备份 ...