P4562 [JXOI2018]游戏 推式子
时间:2021-07-12
本文章向大家介绍P4562 [JXOI2018]游戏 推式子,主要包括P4562 [JXOI2018]游戏 推式子使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
要求 \(O(n)\) ,明显不能直接枚举,我们考虑用期望来做这个事情,因为期望可以看做是一种平均值。
我们称不能够被 \([l,r]\) 中的任何一个数整除的数称为伪素数。
考虑对于一个顺序 \(p\) ,\(t(p)\) 的值应该是最靠右的伪素数。这个结论不难证明。
所以我们要算的就是伪素数的位置期望乘上总方案数,也就是 \(n!\)
所以答案为:
\[n!\times (\sum\limits_{i=k}^n\frac{i\times \binom{i-1}{k-1}}{\binom{n}{k}})\\
=\sum\limits_{i=k}^ni\times n!\times \frac{(i-1)!}{(k-1)!(i-k)!}\times \frac{k!(n-k)!}{n!}\\
=\sum\limits_{i=k}^n\frac{i!}{k!(i-k)!}\times k\times (n-k)!\times k!\\
=k\times (n-k)!\times k!\times \sum\limits_{i=k}^n\binom{i}{k}\\
=k\times (n-k)!\times k!\times \binom{n+1}{k+1}\\
=k\times (n-k)!\times k!\times \frac{(n+1)!}{(n-k)!(k+1)!}\\
=\frac{k}{k+1}\times (n+1)!
\]
其中证明第 \(5\) 行用到了朱世杰恒等式。
代码:
#include<bits/stdc++.h>
#define dd double
#define ld long double
#define ll long long
#define uint unsigned int
#define ull unsigned long long
#define N 10000100
#define M number
using namespace std;
const int INF=0x3f3f3f3f;
const ll mod=1e9+7;
template<typename T> inline void read(T &x) {
x=0; int f=1;
char c=getchar();
for(;!isdigit(c);c=getchar()) if(c == '-') f=-f;
for(;isdigit(c);c=getchar()) x=x*10+c-'0';
x*=f;
}
int l,r,cnt;
bool notPrime[N];
int main(){
read(l);read(r);
for(int i=l;i<=r;i++){
if(!notPrime[i]){
cnt++;
for(int j=i<<1;j<=r;j+=i) notPrime[j]=1;
}
}
ll ans=cnt;
for(int i=1;i<=r-l+2;i++){
if(i!=cnt+1) (ans*=i)%=mod;
}
printf("%lld\n",ans);
return 0;
}
原文地址:https://www.cnblogs.com/TianMeng-hyl/p/15001383.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 08 Confluent_Kafka权威指南 第八章:跨集群数据镜像
- java的reference(五): WeakReference的应用之二--InheritableThreadLocal源码分析
- rabbitmq-3.7.7安装过程
- 09 Confluent_Kafka权威指南 第九章:管理kafka集群
- 关于禁止使用Executors创建线程池的分析
- ArrayList源码分析(基于jdk1.8)(一):源码及基本操作
- ArrayList源码分析(基于jdk1.8)(二):subList陷阱
- 【每日一题】31. Next Permutation
- 关于聚合和多线程的处理套路
- Jboss漏洞利用总结
- 二次注入——sqli-labs第24关
- OCMock 源码分析
- MessageMock : 优雅的模拟 Objective-C 方法
- 10 个最佳 CSS 动画库
- node中文件监听的实现