LINK:游戏

当L==1的时候 容易想到 答案和1的位置有关。

枚举1的位置 那么剩下的方案为(R-1)! 那么总答案为 (R+1)*R/2(R-1)!

考虑L==2的时候 对于一个排列什么时候会终止 容易发现是L~R中所有的质数 在这个排列中的最后一个位置的影响。

还是枚举这个质数的位置i 此时方案数为 C(i-1,s-1)s!(n-s)!

其中s为L~R之中所有的质数个数.

对于L>2 还是考虑先计算出s的个数 刚才是使用了线性筛 此时考虑 质数不能用了 那么可以考虑每个数是否为必要的数。

那么我们从前往后推 只需要知道离自己最近的数是谁 看一下上一个是不是就能判断当前了。

可以发现要除以一下自己的最小质因子。所以线性筛可以解决。

当然可以直接埃拉筛。统计没被筛到的数字个数即可。复杂度nloglogn

这里使用前者.

const int MAXN=10000010,maxn=110,G=3;
int fac[MAXN],inv[MAXN];
int v[MAXN],p[MAXN];
int L,R;
int cnt,top;
inline int ksm(int b,int p)
{
int cnt=1;
while(p)
{
if(p&1)cnt=(ll)cnt*b%mod;
b=(ll)b*b%mod;p=p>>1;
}
return cnt;
}
inline void prepare()
{
fac[0]=fac[1]=1;
rep(2,R,i)
{
fac[i]=(ll)fac[i-1]*i%mod;
if(!v[i])
{
v[i]=i;
p[++top]=i;
if(i>=L)++cnt;
}
rep(1,top,j)
{
if(p[j]>R/i)break;
int ww=i*p[j];
v[ww]=p[j];
if(i<L&&ww>=L)++cnt;
if(v[i]==p[j])break;
}
}
}
inline int C(int a,int b){if(a<b)return 0;return (ll)fac[a]*inv[b]%mod*inv[a-b]%mod;}
int main()
{
freopen("1.in","r",stdin);
get(L);get(R);
prepare();
if(L==1)put((ll)(1+R)*R/2%mod*fac[R-1]%mod);
else
{
inv[R]=ksm(fac[R],mod-2);
fep(R-1,0,i)inv[i]=(ll)inv[i+1]*(i+1)%mod;
int n=R-L+1;
int ans=0;
rep(cnt,n,i)ans=(ans+(ll)C(i-1,cnt-1)*fac[cnt]%mod*fac[n-cnt]%mod*i%mod)%mod;
put(ans);
}
return 0;
}

最新文章

  1. WordPress酷炫CSS3读者墙代码
  2. Java_Java SE6调用动态编译
  3. UVa OJ 140 - Bandwidth (带宽)
  4. Using pg_dump restore dump file on Odoo
  5. 转 精选37条强大的常用linux shell命令组合
  6. (汉化改进作品)BruteXSS:Xss漏洞扫描脚本
  7. Python基础__Python语法基础、条件、循环
  8. VLOOKUP函数常用套路大全
  9. python 中常见绘图属性
  10. mysql删除表中重复数据,只保留一个最小的id的记录
  11. Notepad++远程连接Linux系统
  12. wx小程序入门&amp;坑
  13. php mongo类
  14. json转化数组
  15. [PHP] 重回基础(date函数和strtotime函数)
  16. 个人技术博客(1/2)android布局技巧
  17. 设计模式15---Android 观察者模式(转载自:“http://blog.csdn.net/fangchongbory/article/details/7774044”)
  18. dva框架使用详解及Demo教程
  19. caffe Python API 之Dropout
  20. Apache Derby数据库系统使用方法

热门文章

  1. css自动省略号...,通过css实现单行、多行文本溢出显示省略号
  2. 如何写出高性能的CSS3动画
  3. 「疫期集训day3」要塞
  4. Github 新玩法 -- Profile ReadMe
  5. 浅析Python垃圾回收机制!
  6. 深入学习JavaScript数据类型
  7. CTFHub_技能树_远程代码执行
  8. java 面向对象(三十三):泛型二 泛型在集合中的使用
  9. web 部署专题(二):gunicore 并发部署(用gunicorn+gevent启动Flask项目)
  10. electron代码审计