题目:

分析:

上来看到k=2,。。。

SB杜教筛phi

有点感冒,这把养生一点。。。

于是写了55分走人了。。

下来一看挺简单的啊2333

不考虑gcd时,构造数列的方案为C(N+K-1,K)

考虑gcd时,就要套mu了

ans=sigma(i=1...n)mu[i]*F(n/i)

其中f(x)=C(x+K-1,K)

然后有一个公式。。。

summu[n]=1-sigma(d=2...n)summu[n/d]

这样就可以n^(2/3)求summu了

对于F,由于K很小,可以暴力算。。。

但是这样极限数据会很卡诶。。。

考虑F分段处理

当x+K-1小于1e6时,可以预处理组合数

又由于x+K-1大于1e6的情况很少。。。

所以是可以过的2333。。。。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<map> #define maxn 1000005
#define INF 0x3f3f3f3f
#define MOD 1000000007 using namespace std; inline int getint()
{
int num=,flag=;char c;
while((c=getchar())<''||c>'')if(c=='-')flag=-;
while(c>=''&&c<='')num=num*+c-,c=getchar();
return num*flag;
} int n,K;
int N=;
int pri[maxn],cnt,np[maxn];
int mu[maxn];
long long fac[maxn],inv[maxn];
long long ans;
map<int,long long>M; inline void init()
{
mu[]=;
for(int i=;i<=N;i++)
{
if(!np[i])pri[++cnt]=i,mu[i]=-;
for(int j=;j<=cnt&&i*pri[j]<=N;j++)
{
np[i*pri[j]]=;
if(i%pri[j]==)break;
mu[i*pri[j]]=-mu[i];
}
}
for(int i=;i<=N;i++)mu[i]+=mu[i-];
for(int i=;i<=N;i++)(mu[i]+=MOD)%=MOD;
fac[]=fac[]=inv[]=inv[]=;
for(int i=;i<=N;i++)fac[i]=fac[i-]*i%MOD;
for(int i=;i<=N;i++)inv[i]=inv[MOD%i]*(MOD-MOD/i)%MOD;
for(int i=;i<=N;i++)inv[i]=inv[i]*inv[i-]%MOD;
} inline long long solve(int x)
{
if(x<=N)return mu[x];
if(M.count(x))return M[x];
long long num=;
for(int i=,j;i<=x;i=j+)
{
j=x/(x/i);
(num-=(j-i+)*solve(x/i)%MOD)%=MOD;
}
return M[x]=(num+MOD)%MOD;
} inline long long C(int p,int q)
{return fac[p]*inv[q]%MOD*inv[p-q]%MOD;} inline long long cal(int x)
{
if(x+K-<=N)return C(x+K-,K);
long long tmp=;
for(int i=;i<=K;i++)tmp=tmp*((x+K-)-i+)%MOD;
return tmp*inv[K]%MOD;
} int main()
{
int T=getint();
init();
while(T--)
{
M.clear();
n=getint(),K=getint();
ans=;
for(int i=,j;i<=n;i=j+)
{
j=n/(n/i);
(ans+=(solve(j)-solve(i-)+MOD)*cal(n/i)%MOD)%=MOD;
}
printf("%lld\n",ans);
}
}

20191212模拟赛 问题B的更多相关文章

  1. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  2. NOI模拟赛 Day1

    [考完试不想说话系列] 他们都会做呢QAQ 我毛线也不会呢QAQ 悲伤ING 考试问题: 1.感觉不是很清醒,有点困╯﹏╰ 2.为啥总不按照计划来!!! 3.脑洞在哪里 4.把模拟赛当作真正的比赛,紧 ...

  3. NOIP第7场模拟赛题解

    NOIP模拟赛第7场题解: 题解见:http://www.cqoi.net:2012/JudgeOnline/problemset.php?page=13 题号为2221-2224. 1.car 边界 ...

  4. contesthunter暑假NOIP模拟赛第一场题解

    contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...

  5. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  6. 小奇模拟赛9.13 by hzwer

    2015年9月13日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿(explo) [题目背景] 小奇要开采一些矿物,它驾驶着一台带有钻头(初始能力值w)的飞船,按既定路线依次飞 ...

  7. PKUSC 模拟赛 day1 下午总结

    下午到了机房之后又困又饿,还要被强行摁着看英文题,简直差评 第一题是NOIP模拟赛的原题,随便模拟就好啦 本人模拟功力太渣不小心打错了个变量,居然调了40多分钟QAQ #include<cstd ...

  8. [GRYZ]寒假模拟赛

    写在前面 这是首次广饶一中的OIERS自编自导,自出自做(zuo)的模拟赛. 鉴于水平气压比较低,机(wei)智(suo)的WMY/XYD/HYXZC就上网FQ下海找了不少水(fei)题,经过他们优( ...

  9. BZOJ2741: 【FOTILE模拟赛】L

    2741: [FOTILE模拟赛]L Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 1170  Solved: 303[Submit][Status] ...

随机推荐

  1. Libra和中国央行数字货币(DCEP)的对比

    最近偶然和朋友讨论起Libra,对Libra和央行的数字货币方案很感兴趣.梳理了阅读资料(参考见文末)和自己的思考,发知乎留个记录. Libra 是什么? 无国界货币 + 为全球数十亿人服务的金融基础 ...

  2. Python 多组输入

    #基于Python2.7 #若是想Python做到和C++中while(scanf()!=EOF)一样的多组输入效果,可以如实例所示书写 #实例实现了多组输入,计算A+B+C并输出的任务 while ...

  3. win7+oracle11,vmbox中winxp连接

    重启TNSLSNR  打开CMD,输入以下命令. lsnrctl stop lsnrctl start lsnrctl stat /////////////////////////////////// ...

  4. Iptables-linux服务器做路由转发

    https://blog.csdn.net/liang_operations/article/details/80747510 实现内部服务器C可以经过服务器B进行上网. 3.1服务器双网卡,一块配置 ...

  5. 【python测试开发栈】—帮你总结Python os模块高频使用的方法

    Python中的os模块是主要和系统操作相关的模块,在平时的工作中会经常用到,花时间整理了os模块的高频使用方法,同时整理出使用时需要注意的点.归纳来讲,os模块的方法可以分为:目录操作.文件操作.路 ...

  6. 神奇的 SQL 之 联表细节 → MySQL JOIN 的执行过程(二)

    开心一刻 一头母牛在吃草,突然一头公牛从远处狂奔而来说:“快跑啊!!楼主来了!” 母牛说:“楼主来了关我屁事啊?” 公牛急忙说:“楼主吹牛逼呀!” 母牛大惊,拔腿就跑,边跑边问:“你是公牛你怕什么啊? ...

  7. python写冒泡排序

    冒泡就是重复地遍历要排序的数列,一次比较两个元素(泡泡),如果他们的顺序错误就把他们交换过来,像泡泡一样,依次按照顺序上升排列. 冒泡排序算法的运作如下: 比较相邻的元素.如果第一个比第二个大(升序) ...

  8. 本地项目推送到coding

      当我们本地新建了一个项目,需要放到coding上维护时,按照下面步骤即可做到. 1.先在coding上新建一个项目,并完成初始化. 2.进入到本地项目的目录下 //初始化本地仓库 a:git in ...

  9. DOCKER学习_005:Flannel网络配置

    一 简介 Flannel是一种基于overlay网络的跨主机容器网络解决方案,也就是将TCP数据包封装在另一种网络包里面进行路由转发和通信, Flannel是CoreOS开发,专门用于docker多机 ...

  10. Java日志体系居然这么复杂?——架构篇

    本文是一个系列,欢迎关注 日志到底是何方神圣?为什么要使用日志框架? 想必大家都有过使用System.out来进行输出调试,开发开发环境下这样做当然很方便,但是线上这样做就有麻烦了: 系统一直运行,输 ...