题目描述

她长大以后创业了,开了一个公司。 但是管理公司是一个很累人的活,员工们经常背着可怜偷懒,可怜需要时不时对办公室进行检查。

可怜公司有 n 个办公室,办公室编号是 l 到 l+n−1 ,可怜会事先制定一个顺序,按照这个顺序依次检查办公室。一开始的时候,所有办公室的员工都在偷懒,当她检查完编号是 i 的办公室时候,这个办公室的员工会认真工作,并且这个办公室的员工通知所有办公室编号是 i 的倍数的办公室,通知他们老板来了,让他们认真工作。因此,可怜检查完第ii 个办公室的时候,所有编号是 i 的倍数(包括 i )的办公室的员工会认真工作。

可怜发现了员工们通风报信的行为,她发现,对于每种不同的顺序 p ,都存在一个最小的 t(p) ,使得可怜按照这个顺序检查完前 t(p) 个办公室之后,所有的办公室都会开始认真工作。她把这个 t(p) 定义为 p的检查时间。

可怜想知道所有 t(p)的和。

但是这个结果可能很大,她想知道和对 109+7 取模后的结果。

输入格式

第一行输入两个整数 l,r 表示编号范围,题目中的 n就是 r−l+1 。

输出格式

一个整数,表示期望进行的轮数。

输入
2 4
输出
16

解释一下题意

个人觉得很有必要。。。

在区间\([l , r]\) 间选择若干个数 , 选完一个数之后 , 他及他的倍数都会被覆盖 , 求所有的方案

要选多少个数才能选完的和

首先,发现有一些数是必须选的这些数的没有除他自己以外的因子 , 所以必须选,设有sum个,

则选 i 个数结束的方案为

\(\huge f[i] = sum * C_{n - sum}^{n - i} * (n - i)! * (i - 1)!\)

因为在第i个位置结束 , 那么最后一个一定是必须选的数之一 , 这个数有 sum 种可能

\(\huge C_{n - sum}^{n - i}\) 是不选的数 , 乘上\(\huge (n - i)!\) 就是不选的部分的方案 , \((i - 1)!\) 就是选的那部分除了最后一个数的方案

#include<iostream>
#include<cstdio>
using namespace std;
const int N = 1e7+10;
const int mod = 1e9+7; int vis[N] , fac[N] , inv[N] , f[N]; int ksm(int a , int k)
{
int ans = 1;
for( ; k ; k >>= 1 , a = 1LL * a * a % mod)
if(k & 1) ans = 1LL * ans * a % mod;
return ans;
} void Init(int maxn)
{
fac[0] = inv[0] = 1;
for(int i = 1 ; i <= maxn ; ++i) fac[i] = 1LL * i * fac[i-1] % mod;
inv[maxn] = ksm(fac[maxn] , mod - 2);
for(int i = maxn - 1 ; i >= 1 ; --i) inv[i] = 1LL * inv[i+1] * (i+1) % mod;
return ;
}
int C(int n , int m) { if(n < m) return 0; else return 1LL * fac[n] * inv[m] % mod * inv[n-m] % mod; }
int main()
{
int l , r;
register int i , j , sum = 0 , n , ans;
cin >> l >> r;
Init(r);
for(i = l ; i <= r ; ++i)
{
if(!vis[i])
{
sum++;
for(j = i << 1 ; j <= r ; j += i)
vis[j] = 1;
}
}
n = r - l + 1;
for(i = sum ; i <= n ; ++i)
f[i] = 1LL * sum * C(n - sum , n - i) % mod * fac[n - i] % mod * fac[i - 1] % mod;
ans = 0;
for(i = sum ; i <= r - l + 1 ; ++i) ans = (1LL * ans + 1LL * f[i] * i % mod) % mod;
cout << ans << endl;
return 0;
}

P4562 [JXOJ2018]游戏的更多相关文章

  1. P4562 [JXOI2018]游戏

    题面 题目描述 她长大以后创业了,开了一个公司. 但是管理公司是一个很累人的活,员工们经常背着可怜偷懒,可怜需要时不时对办公室进行检查. 可怜公司有 \(n\) 个办公室,办公室编号是 \(l\) 到 ...

  2. luogu P4562 [JXOI2018]游戏 组合数学

    LINK:游戏 当L==1的时候 容易想到 答案和1的位置有关. 枚举1的位置 那么剩下的方案为(R-1)! 那么总答案为 (R+1)*R/2(R-1)! 考虑L==2的时候 对于一个排列什么时候会终 ...

  3. 洛谷P4562 [JXOI2018]游戏(组合数学)

    题意 题目链接 Sol 这个题就比较休闲了. \(t(p)\)显然等于最后一个没有约数的数的位置,那么我们可以去枚举一下. 设没有约数的数的个数有\(cnt\)个 因此总的方案为\(\sum_{i=c ...

  4. 洛谷P4562 [JXOI2018]游戏 数论

    正解:数论 解题报告: 传送门! 首先考虑怎么样的数可能出现在t(i)那个位置上?显然是[l,r]中所有无法被表示出来的数(就约数不在[l,r]内的数嘛QwQ 所以可以先把这些数筛出来 具体怎么筛的话 ...

  5. Luogu P4562 [JXOI2018]游戏

    题目 我们用埃氏筛从\(l,r\)筛一遍,每次把没有被筛掉的数的倍数筛掉. 易知最后剩下来的数(这个集合记为\(S\))的个数就是我们需要选的数,设有\(s\)个,令\(n=r-l+1\). 记\(f ...

  6. 使用HTML5开发Kinect体感游戏

    一.简介 我们要做的是怎样一款游戏? 在前不久成都TGC2016展会上,我们开发了一款<火影忍者手游>的体感游戏,主要模拟手游章节<九尾袭来 >,用户化身四代,与九尾进行对决, ...

  7. jQuery实践-网页版2048小游戏

    ▓▓▓▓▓▓ 大致介绍 看了一个实现网页版2048小游戏的视频,觉得能做出自己以前喜欢玩的小游戏很有意思便自己动手试了试,真正的验证了这句话-不要以为你以为的就是你以为的,看视频时觉得看懂了,会写了, ...

  8. Unity游戏内版本更新

    最近研究了一下游戏内apk包更新的方法. ios对于应用的管理比较严格,除非热更新脚本,不太可能做到端内大版本包的更新.然而安卓端则没有此限制.因此可以做到不跳到网页或应用商店,就覆盖更新apk包. ...

  9. 游戏服务器菜鸟之C#初探一游戏服务

    本人80后程序猿一枚,原来搞过C++/Java/C#,因为工作原因最后选择一直从事C#开发,因为读书时候对游戏一直比较感兴趣,机缘巧合公司做一个手游的项目,我就开始游戏服务器的折腾之旅. 游戏的构架是 ...

随机推荐

  1. 在线编辑器(WangEditor)

    自己之前写了一篇关于POI 相关的博客, 想了想在公司中一般常用的不就是上传下载,poi,分页,定时等.好像还有个在线编辑器, 于是自己就花了两个多小时把编辑器相关的代码撸了遍,当然了是先百度找了找资 ...

  2. SpringBoot学习- 11、更好用的代码生成工具EasyCode

    SpringBoot学习足迹 之前的mybatis代码生成工具无法自定义模板,找了一个可以自定义模板的插件,初学者最好用比较齐全的代码生成工具,不然拼错一个代码会掉坑里半天爬不出来. 有的同学会说干么 ...

  3. python全栈学习 day04

    列表基本操作: #!/usr/bin/env python # -*- coding:utf-8 -*- ''' li = ['alex', [1, 2, 3], 'wusir', 'godness' ...

  4. JAVA8List排序,(升序,倒序)

    List<Integer> integerList = Arrays.asList(4, 5, 2, 3, 7, 9); List<Integer> collect = int ...

  5. 洛谷【P1595 信封问题】 题解

    题目链接 https://www.luogu.org/problem/P1595 题目描述 某人写了n封信和n个信封,如果所有的信都装错了信封.求所有信都装错信封共有多少种不同情况. 输入格式 一个信 ...

  6. ASP.NET简介及网页基础知识

    ASP:Active Server Page. asp.net属于.NET Framework的一部分,命名空间是System.Web,主要用于网络程序的开发. .net版本演化(asp.net和.n ...

  7. vue自学入门-8(vue slot-scope)

    vue自学入门-1(Windows下搭建vue环境) vue自学入门-2(vue创建项目) vue自学入门-3(vue第一个例子) vue自学入门-4(vue slot) vue自学入门-5(vuex ...

  8. Ioc依赖注入:Unity4.0.1 在项目中的应用 (MVC和API)

    使用Unity的好处网上有很多,百度一下即可 这里引用了一篇关于面向接口编程的好处的文章作为引申:https://blog.csdn.net/Cyy19970527/article/details/8 ...

  9. Spring学习笔记-Spring之旅-01

    使用Spring简化JAVA开发 Spring的四种关键策略: ●基于POJO的轻量级和最小侵入式编程: ●通过依赖注入(DI)和面向接口实现松耦合: ●基于切面(AOP)和惯例进行声明式编程. ●通 ...

  10. sqli-labs1-10基础掌握

    00x01基于错误的GET单引号字符型注入 首先and 1=2判断是否为数值型sql注入,页面正常,不是 然后’测试,发现页面报sql语句错误,存在字符型sql注入  猜测参数为单引号闭合,用注释语句 ...