首页 技术 正文
技术 2022年11月17日
0 收藏 847 点赞 4,637 浏览 1200 个字

interlinkage:

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

description:

[JXOI 2018] 游戏 解题报告 (组合数+埃氏筛)

solution:

  • 注意到$l=1$的时候,$t(p)$就是$1$出现的位置,答案就是$1$出现的位置之和;
  • 这启发我们找一些关键的数字,这些数字在$[l,r]$内不存在约数;
  • 结论是$t(p)$为最后一个关键数的位置;
  • 不妨反证法,假设当所有的关键数都被用掉时还有数字没有筛掉。设最后一个关键数的位置为$pos$,既然还没有全部筛完,那么在$[pos+1,n]$之间还存在数字没有被筛掉。对于其中一个没有被筛掉的数,由于它并不是关键数,那么它的某一个约数一定还没有被筛掉,那么它约数的约数也没有被筛掉…以此类推,直到一个在$[l,r]$之间没有约数的数还没有被筛掉,但我们又知道这样的数已经被用完了,假设不成立;
  • 我们可以通过埃氏筛算出关键数的个数$sum$;
  • 设$f_i$为$t(p)$等于$i$的排列个数,$n=r-l+1$,$f_i=sum*\dbinom{n-sum}{n-i}*(n-i)!*(i-1)!$;
  • $ans=\sum_{i=sum}^{n}f_i*i$;

code:

#include<cstring>
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;const int N=1e7+;
const int mo=1e9+;
int l,r,sum,n;
bool vis[N];
int fac[N],finv[N];
int qpow(int a,int b)
{
int re=;
for (;b;b>>=,a=1ll*a*a%mo) if (b&) re=1ll*re*a%mo;
return re;
}
int C(int a,int b)
{
if (a==b||!b) return ;
return 1ll*fac[a]*finv[b]%mo*finv[a-b]%mo;
}
int main()
{
scanf("%d%d",&l,&r);
n=r-l+;
fac[]=;
for (int i=;i<=n;i++) fac[i]=1ll*fac[i-]*i%mo;
for (int i=l;i<=r;i++)
{
if (!vis[i])
{
sum++;
for (int j=i<<;j<=r;j+=i) vis[j]=;
}
}
finv[n]=qpow(fac[n],mo-);
for (int i=n-;i>=;i--) finv[i]=1ll*finv[i+]*(i+)%mo;
int ans=;
for (int i=sum;i<=n;i++)
{
(ans+=1ll*sum*C(n-sum,n-i)%mo*fac[n-i]%mo*fac[i-]%mo*i%mo)%=mo;
}
printf("%d\n",ans);
return ;
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,495
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,295